2013-07-10 13 views
8

Kürzlich habe ich einen Fix auf eine Java-Desktop-Anwendung angewendet. Ich habe das getan, indem ich den Code in einer meiner Klassen geändert, ihn kompiliert und das neue Jar an die Produktionsumgebung gesendet habe.Wie packe ich ein Java-Programm?

Ich werde jetzt gefragt, ob es möglich ist, nur das JAR in der Produktion zu patchen, indem ich einfach die kompilierte Klasse, die ich repariert habe, kopiere, oder sogar ein Patchprogramm/Skript, das nur die modifizierten Dateien aktualisieren kann.

Zusätzliche Informationen:

  1. Der Patch muss nicht in der Laufzeit angewendet werden. Das heißt, der Patch kann als separates Programm oder Aktivität ausgeführt werden. Mein altes Programm muss nicht automatisch aktualisiert werden.
  2. Kann dies auch mit Web-Anwendungen (WAR-Datei) getan werden?

Die beste Antwort, die ich kam, ist dies, aber es ist 2 Jahre alt. Patching Java software

Ist meine Anforderung selten? Ich habe noch nie ein Tutorial zum Patchen einer Java-Anwendung gesehen. Dies wird ersetzen alte Klassendateien mit demselben Namen mit neuen

+0

Diese Frage scheint off-topic zu sein, denn es geht um Infrastruktur - besser geeignet für Programmierer oder vielleicht serverfault – Bohemian

Antwort

7

Ich werde jetzt gefragt, ob es möglich ist, das JAR in der Produktion nur durch Kopieren der kompilierten Klasse, die ich repariert habe, zu reparieren oder sogar ein Patchprogramm/Skript zu erstellen, das nur die geänderten Dateien aktualisieren kann .

Ja. Es ist möglich, eine JAR-Datei mit jar -u zu patchen. Es ist auch möglich, eine WAR-Datei auf die gleiche Weise zu patchen.

Aber ich würde es nicht empfehlen. Die JAR- oder WAR-Datei sollte die Bereitstellungs-/Verwaltungseinheit sein. Wenn Sie JAR/WAR-Dateien auf Produktionsservern patchen, ist es schwierig zu verfolgen, was tatsächlich wo verwendet wird. Wenn Sie nicht vorsichtig sind, herrscht Chaos und Verwirrung.

Die einzige Situation, in der Patching unvermeidbar ist, ist, wo Sie eine Bibliothek von Drittanbietern haben oder etwas, das Sie nicht aus der Quelle erstellen können, aber Sie müssen dennoch ändern. Aber selbst in diesem Fall ist es am besten, JAR/WAR auf Ihrer Build-Plattform zu modifizieren und das modifizierte JAR/WAR zu implementieren. Es ist keine gute Idee, JARs, WARs oder bereitgestellte Webapps auf der Produktionsplattform zu patchen.


Ist meine Anforderung selten?

Ja. Es gibt einen besseren Weg ...

Ich habe noch nie ein Tutorial zum Patchen einer Java-Anwendung gesehen.

Nicht überraschend, da es eine bessere Art und Weise ...

+0

Danke für Ihre Antwort. Wie gesagt, bei der Neuverwendung des getesteten Jar/War ist das, was ich normalerweise mache. Dies war ein Mandat unserer Sicherheits- und Standardabteilung, und ich bin froh, dass ich nicht die Einzige war, die diese Anforderung als seltsam empfand. –

+0

@JefreyValencia - Ich wäre versucht, zurückzuschlagen, wenn "uns gepatchte und ordnungsgemäß getestete JARs zur Verfügung stellen". Ich wäre auch neugierig zu wissen, was sie von Ihnen verlangen. Es klingt alles etwas bizarr ..,. –

+0

Hi wieder Stephen, mehr oder weniger das Sicherheits- und Standard-Team versuchen nur die Änderungen zu überwachen, die wir an der Anwendung bereits in der Produktion machen. Eines der gegebenen Beispiele (Simplified/Rephrased) ist, dass wenn ein Fehler im Windows-Betriebssystem existiert, Sie ihn nur patchen, anstatt die Anwendung neu zu installieren. Dieses Argument macht Sinn, aber in meiner begrenzten Erfahrung wusste ich nicht, ob es für eine Java-Anwendung möglich oder sogar geeignet war. –

4

Sie können das alte Glas aktualisieren, indem jar uf jarfile classfile(s)

tun, so dass ein Auto-Patcher mit, dass sollte nicht schwer seine

+0

Vielen Dank für Ihre Antwort, wählte einfach Stephen Antwort, weil er auch zusätzliche Informationen hinzugefügt. –

2

für die Bereitstellung von Java Desktop-Anwendungen. Am besten ist es, die App zu installieren. mit Java Web Start. JWS funktioniert unter Windows, OS X & * nix. Es enthält eine automatische Aktualisierung.

Kann dies auch mit Web-Anwendungen (WAR-Datei) gemacht werden?

Nein. JWS ist für Desktop-Anwendungen. nur.

+0

Vielen Dank für Ihre Antwort. Wir könnten dies auf zukünftigen Desktop-Anwendungen versuchen –

0

Werfen Sie einen Blick auf Getdown - die ein System bereitzustellen, zielt darauf ab, für das Herunterladen und eine Sammlung von Dateien auf dem Computer eines Benutzers zu installieren und aktualisieren diese Dateien wie benötigt.