hallo,
ich möchte anstelle von UnicastRemoteObject die Klasse Activatable für meine Serveranwendung benutzen, um durch den RMI-Daemon "rmid" meine registrierten Dienste automatisch (ohne laufenden Serverprozess etc. ) starten zu lassen.
Leider stosse ich schon in einer Beispielanwendung auf folgende Exception:
java.rmi.ServerException: RemoteException ....usw.....java.rmi.UnmarshalException.....usw......
java.lang.ClassNotFoundException: java.rmi.server.RemoteObjectInvocationHandler
Als Klassen habe ich eine Interface-Klasse, deren Implementierung und eine sog. ServerFactory, welche den rmid mit den nötigen Informationen versorgen soll. Die Fehlermeldung erfolgt beim Aufruf der main() der ServerFactory:
Ich gehe mal davon aus, dass die Policy-Dateien mit ihren Pfadangaben passen, da bis zum Eintrag in die Registry keinerlei Fehler auftreten !? Ich kann natürlich auch den ganzen code hier posten bzw. wenn jemand eine Idee hat und die Files geschickt bekommen möchte?!
Bin für jeden Hinweis dankbar.
Schöne Grüsse
kobi
ich möchte anstelle von UnicastRemoteObject die Klasse Activatable für meine Serveranwendung benutzen, um durch den RMI-Daemon "rmid" meine registrierten Dienste automatisch (ohne laufenden Serverprozess etc. ) starten zu lassen.
Leider stosse ich schon in einer Beispielanwendung auf folgende Exception:
java.rmi.ServerException: RemoteException ....usw.....java.rmi.UnmarshalException.....usw......
java.lang.ClassNotFoundException: java.rmi.server.RemoteObjectInvocationHandler
Als Klassen habe ich eine Interface-Klasse, deren Implementierung und eine sog. ServerFactory, welche den rmid mit den nötigen Informationen versorgen soll. Die Fehlermeldung erfolgt beim Aufruf der main() der ServerFactory:
Code:
if (System.getSecurityManager() == null) {
System.setSecurityManager(new SecurityManager()); }
String implClass = "ServerInterfaceImpl";
String policy = System.getProperty("policy", "group.policy");
String implCodebase = System.getProperty("impl.codebase");
String filename = System.getProperty("file", "");
Properties props = new Properties();
props.put("java.security.policy", policy);
props.put("java.class.path", "no_classpath");
props.put("impl.codebase", implCodebase);
if (filename != null && !filename.equals("")) {
props.put("file", filename); }
ActivationGroupDesc activationgroup = new ActivationGroupDesc(props, null);
ActivationGroupID groupID = ActivationGroup.getSystem().registerGroup(activationgroup);
MarshalledObject data = null; //ohne besondere Daten
if (filename != null && !filename.equals("")) {
data = new MarshalledObject(filename); }
ActivationDesc desc = new ActivationDesc(groupID, implClass, implCodebase, data);
Remote stub = Activatable.register(desc);
String name = System.getProperty("name");
try {
LocateRegistry.getRegistry().rebind(name, stub);
//Naming.rebind(name,stub);
}catch(Exception e) {
System.out.println("Registry-FEHLER - " +e.toString());
System.out.println("Factory beendet");
System.exit(-1);
}
Ich gehe mal davon aus, dass die Policy-Dateien mit ihren Pfadangaben passen, da bis zum Eintrag in die Registry keinerlei Fehler auftreten !? Ich kann natürlich auch den ganzen code hier posten bzw. wenn jemand eine Idee hat und die Files geschickt bekommen möchte?!
Bin für jeden Hinweis dankbar.
Schöne Grüsse
kobi