Moin,
ich habe ein Problem mit dem dynamischen Nachlden von Code.
Mein Projekt sieht wie folgt aus:
Klassen:
Interface
Server
Client
Auf dem Server läuft die registry und ein Web-Server, der das Interface als JAR-File bereit stellt.
Auf dem Client sind folgende Klassen:
Client
Interface
Auf dem Server sind diese:
Server
Interface
So weit funktioniert es. Aber das Interface sollte bei RMI ja nicht auf dem Client UND dem Server liegen, sondern bei bedarf nachgeladen werden, deshalb der Web-Server.
Wenn ich aber, die Interface-Klasse auf dem Client lösche, kann ich den Clent nicht mehr starten, da beim "lookup" ja das Interface schon benötigt wird.
Hier ein Codeausschnitt:
Diese zeile
löst dann einen Fehler aus, weil er die Klasse nicht mehr findet, die ja dynamisch nachgeladen werden soll.
Was mache ich da falsch?!
Ich kann schlecht immer das Interface auf dem Server UND dem Client verteilen. Wenn es mehrere Clients werden, muss das Interface immer wieder erneut verteilt werden.
Vielen Dank für eure Hilfe
Gruß
sdy
ich habe ein Problem mit dem dynamischen Nachlden von Code.
Mein Projekt sieht wie folgt aus:
Klassen:
Interface
Server
Client
Auf dem Server läuft die registry und ein Web-Server, der das Interface als JAR-File bereit stellt.
Auf dem Client sind folgende Klassen:
Client
Interface
Auf dem Server sind diese:
Server
Interface
So weit funktioniert es. Aber das Interface sollte bei RMI ja nicht auf dem Client UND dem Server liegen, sondern bei bedarf nachgeladen werden, deshalb der Web-Server.
Wenn ich aber, die Interface-Klasse auf dem Client lösche, kann ich den Clent nicht mehr starten, da beim "lookup" ja das Interface schon benötigt wird.
Hier ein Codeausschnitt:
Code:
public class Client {
public static void main(String[] args) {
System.getProperties().put("java.rmi.server.codebase", "http://192.168.0.24:8080/IShop/myInterface.jar");
System.getProperties().put("java.security.policy", "shop.policy");
System.setSecurityManager(new SecurityManager());
try{
myInterface stub = (myInterface) Naming.lookup("rmi://192.168.0.24:3000/shop5");
} catch(Exception e) {
e.printStackTrace();
}
}
}
Diese zeile
Code:
myInterface stub = (myInterface) Naming.lookup("rmi://192.168.0.24:3000/shop5");
Was mache ich da falsch?!
Ich kann schlecht immer das Interface auf dem Server UND dem Client verteilen. Wenn es mehrere Clients werden, muss das Interface immer wieder erneut verteilt werden.
Vielen Dank für eure Hilfe
Gruß
sdy