# Dynamischer Klassendownload mit URLClassLoader



## Stefan Litzel (27. Jan 2009)

Hey Leute, hoffe ihr könnt mir helfen.

Ich möchte mir gerne meinen eigenen ClassLoader schreiben. Was ich mal erreichen will ist: Der Client schaut auf nem Webserver nach was für Klassendateien sind (dort sollen dann nur die Remote Interfaces liegen), diese hohlt er sich nach und nach runter. 

Ich bin mir aber noch nicht ganz im klaren über die implementierung der Klassen Lader (eigenen Erstellen, URLClassLoader, etc).

Auch das vorgehen bezüglich der Methodenaufrufe ist mir noch schleierhaft. Man bekommt ja mit registry.lookup("objektname") den Stub zurück. Wie sehe ich jetzt welches Interface ich nachladen muss und wie genau ruf ich dann die Methode auf.


Wäre super wenn mir jemand etwas auf die Sprünge helfen könnte,


Mit freundlichen Grüßen

Stefan Litzel



P.S.: Ich weis, dass man für RMI eher die codebase benützt um die Klassen mit einer URL zu stempeln aber, da es nur für mich ist und es mich einfach interessiert wollte ich es mal auf die Art machen.


----------



## Stefan Litzel (27. Jan 2009)

Tut mir leid wegen Doppelpost aber als Gast kann man leider nicht editieren.


Ich wollte noch fragen, falls jemand gute Tutorials bezüglich Reflection API und oder Klassenlader hat wäre ich sehr verbunden, wenn ihr mir diese nennen würde.


Danke schonmal im Vorraus.


Mit freundlichen Grüßen

Stefan Litzel


----------



## tuxedo (28. Jan 2009)

AFAIK steckt hinter der Sache mit der RMI Codebase genau die von dir geschte Funktionalität. 

Bei der verwendung von Reflection kannst du den Classloader mit angeben. Und genau das wird RMI intern mit der Codebase machen. 

Du kannst also, wenn du unbedingt einen eigenen Loader-Mechanismus machen willst die Klassen schon vorher laden (hast du richtig erkannt, du musst die Namen dann schon vorher wissen), oder du überlässt es RMI.

Einen anderen Weg seh ich da nicht. Außer du Implementierst RMI wie ich selbst (siehe Signatur). Dann kannst du den Classloader selbst bestimmen. 

Oder aber ich irre mich in meinen Aussagen und man kann RMI doch sagen welchen Classloader er für's nachladen von Interfaces benutzen soll. 

Hier zwei URLs die mir damals geholfen haben:

http://wiklet.javacore.de/index.php/Reflection_-_Die_Java_Reflection_API#Objekterzeugung

http://www.zdnet.de/anwendungsentwi..._optimal_nutzen_story-20000201-39130368-1.htm

Gruß
Alex

P.S. Warum man bei RMI den "Aufwand" betriebt die Interfaces "on the fly" nachzuladen: Kein Plan. Ich brauch ja sowieso eine funktionierende Implementierung die zum Remote-Objekt passt. Wieso kann ich dann nicht auch schon von haus aus die Interfaces dazupacken?

Wenn sich ein Interfaces ändert, sollte sich auch der Client ändern. Also kann ich auch hier die Interfaces mitliefern...


----------

