![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
Mal eine Frage, bevor ich nun in aller Ausführlichkeit mein recht spezielles Problem schildere: Kennt sich einer mit ClassLoadern aus?
Stichworte: Dynamisches Austauschen von Klassen zur Laufzeit, also quasi ohne Neustart neue Module (JARs) einbinden oder auch alte durch eine neue Version zu ersetzen? Das Problem ist leider zu komplex, ums mal in 2 Sätze zu bringen und ich mache mir nur die Mühe, wenn sich hier einer auf dem Gebiet auskennt
__________________
Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
Nun denn. Ich habe eine Basis-Anwendung. Der will ich zur Laufzeit dynamisch Module einhängen und aushängen, oder auch mal eine neue Version laden. Alles ohne die Anwendung selbst neu zu starten.
Nun habe ich eine Klasse A in der Basisanwendung. Diese Klasse soll ein Objekt deserialisieren, was in Modul "A" hängt. Wie muss dann der Class Loader aussehen, damit ich auch die Klasse erreiche? Problem ist ja, dass der VM-ClassLoader nichts von seinem Glück weiss und auch folglich meine Basis-Anwendung die Klasse so ohne weiteres nie erreichen kann. Hinzu kommt, dass es sich bei der skizzierten Anwendung um einen Application Server handelt. Als solcher startet er mehrere Anwendung parallel (wenn man das will). Ich muss also, wenn Anwendung 1 gemeint ist, die Klasse "foo" unter Umständen aus einem ganz anderen Jar holen als wenn Anwendung 2 gemeint ist. Ich kann also nicht einfach einen ClassLoader bauen, der alles kennt, da ich nicht will, dass Anwendung 1 Seiteneffekte auf Anwendung 2 hat.
__________________
Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
|
|
|
|
|
Nach oben #4 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Okay. Das ist unangenehm. Im Prinzip wirst du wohl oder übel Modul A zum deserialisieren nutzen müssen, sonst ist die Klasse unbekannt. Es gibt also im Grunde zwei Möglichkeiten:
a) Du legst den ClassLoader von Modul A als Parent des ClassLoaders der Basisanwendung fest (allerdings sind dann die Termina ziemlich durcheinander) b) Du fragst der Reihe nach alle Module, ob die dir die Klasse deserialisieren können (ServiceLocator-Pattern). Das könnte unter Umständen über UniqueID oder wie das war gelöst werden - also die Identifizierung und Versionisierung der Klasse. Schön finde ich keine der Lösungen, aber was besseres fällt mir spontan auch nicht ein. |
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
Ich habe das mal in dem entsprechenden Sun-Forum gepostet: http://www.projectdarkstar.com/index...99&topic=353.0
Die Aussage von dem Sun-Entwickler, dass er denk, dass es auf bizarre Art und Weise schief gehen wird, spornt mich jetzt nur noch mehr an
__________________
Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Probleme mit Strato / Arcor? | MrNiceGuy | Plauderecke | 15 | 28.12.2006 23:35 |
| Caching mittels dbm-Dateien, Probleme mit dba_popen() | Ben | PHP-Programmierung | 4 | 27.07.2006 13:23 |
| Probleme mit Anhängen | Ben | Archiv | 0 | 16.06.2006 16:13 |
| Layout Probleme | VipViper2000 | Desktop-Applikationen und Grafik | 8 | 13.09.2005 22:35 |
| Probleme und Zeitdruck: Kunden-DB (Vector) | mubbelbubbel82 | Allgemeine Java-Programmierung | 3 | 14.07.2005 23:43 |