Portal > Foren > Java > Allgemeine Java-Programmierung > Probleme mit ClassLoadern
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 03.03.2008, 17:07 Nach oben    #1
Martin Eisengardt
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard Probleme mit ClassLoadern

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
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.03.2008, 17:14 Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

Gedanken drüber gemacht hab ich mir durchaus mal. Vielleicht versuchst du also erstmal die Kurzfassung und dann sehen wir weiter.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.03.2008, 18:37 Nach oben    #3
Martin Eisengardt
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

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
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2008, 17:03 Nach oben    #4
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

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.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.03.2008, 13:17 Nach oben    #5
Martin Eisengardt
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

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
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:03 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44