Hot Deployment - ClassLoader - Proxy

Alex04

Bekanntes Mitglied
Hallo,
ich hätte eine Frage zum Hot Deployment.
Wie kann ich während der Laufzeit eine Implementierungsklasse austauschen.
Beispiel:

Java:
public class Test {

public static void sayHello() {
System.out.println("Hello old"); // New class says "Hello new"
}

}

Ich will die Applikation starten und während der Laufzeit die Klasse Test durch eine "neuere" Klasse Test austauschen.
Weiter würde ich gerne wissen wie man Proxies für solch ein Hot Deployment verwenden kann (Frage aus der Uni...)

Vielen Dank schon mal für eure Hilfe!!

Vlg
Alex
 

FArt

Top Contributor
Hotdeployment ist kniffelig, wenn man den Lebenszyklus der Klasse genau betrachtet.

Auf jeden Fall muss die Klasse von einem eigenen (am besten neuen) Classloader geladen werden. Dann muss im Prinzip der Klassenpfad auf Änderungen überwacht werden. Wird der Klassenpfad geändert (z.B. JAR ausgetauscht), muss der alte Classloader verworfen werden und ein neuer bereitgestellt werden, der diese Klassen lädt.

Tricky dabei: was passiert mit den aktiven Instanzen der geänderten Klasse bzw. mit den anderen Klassen aus dem gleichen JAR, die aber z.B. noch nie geladen wurden aber u.U. von der "hägenden" Instanz noch benötigt werden?

Dazu kopiert man normalerweise die deployten JARs weg und lädt Klassen nur von dort. Erst wenn nach einem Redeployment alle Instanzen der Klassen weg sind kann sowohl der Classloader als auch die Klassen vom GC collected werden, die temporären JARs verworfen werden.

Das ganze ist noch viel komplizierter, besonders wenn man Hierarchisch Classloader aufbauen möchte und auch erlauben möchte, dass Klassen von anderen Loadern isoliert werden (also z.B. die gleiche Klasse in verschiedenen Versionen) usw.

Ich würde das nicht unbedingt mit dynamischen Proxies realisieren. Im wahren Leben sehe ich keinen Vorteil von dessen Einsatz an dieser Stelle.
 
G

Gast2

Gast
OT: Nur so am Rande da ich noch relativ neu bin in Java: Ist das ein Anfänger Thema? :autsch: Falls ja ;(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand "In"Deployment Allgemeines EE 4
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
E Anfängerfrage zu JEE Packaging & Deployment Allgemeines EE 8
O JBoss6 Deployment schlägt Fehl Allgemeines EE 3
2 Deployment per EAR [JBOSS] Allgemeines EE 6
S Embedded JBoss Problem beim Deployment Allgemeines EE 4
Y JSF Komische Fehlermeldung nach Deployment und Serverstart Allgemeines EE 5
S Glassfish: Deployment von Realms Allgemeines EE 2
J Maven & Deployment Allgemeines EE 7
ruutaiokwu ejb hot deployment unter jboss 4.2.3 Allgemeines EE 7
M Deployment auf entfernten JBoss Allgemeines EE 4
M The re is no default persistence unit in this deployment Allgemeines EE 2
G Probleme mit dem Klassenpfad nach dem deployment Allgemeines EE 2
M Deployment in Unterverzeichnis Allgemeines EE 7
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
A Zugriff auf Parameter im Deployment Descriptor Allgemeines EE 2
M Struts Deployment Allgemeines EE 3
M Probleme beim Webservice Deployment(Sun ApplicationServer) Allgemeines EE 2
T Applikations-Konfiguration im Deployment-Deskriptor? Allgemeines EE 10
T Deployment von WAR-Archiven Allgemeines EE 5
H JBoss Deployment Allgemeines EE 11
V JBoss und Classloader Allgemeines EE 6
B Maven und Proxy Allgemeines EE 3
reibi Tomcat Proxy eintragen Allgemeines EE 2
M JSF und Proxy Allgemeines EE 10
T JavaMail Programm: Nachricht über Proxy versenden Allgemeines EE 3
E ClassCCastException: $Proxy. O_o ! Allgemeines EE 4

Ähnliche Java Themen

Neue Themen


Oben