CalculationServerRegistrationService server = new CalculationServerRegistrationService();
ICalculationServerRegistrationService stub = (ICalculationServerRegistrationService) UnicastRemoteObject.exportObject(server, RMI_PORT);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("ICalculationServerRegistrationService", stub);
new RMIServerTimeoutChecker().run();
}
Wenn ich rmiregistry Befehl auf der gleichen Maschine zu starten, ohne Argumente, aber innen D starten:/git/nnCloud/BE/nnCloudRESTService/target/Klassen-Ordner, funktioniert alles einwandfrei. Da ich jedoch zwei Server aus verschiedenen Programmen benötige, möchte ich eine einfache Registrierung mit zwei Codebasen haben, daher muss diese explizit angegeben werden, anstatt zwei "rmiregistry" -Befehle in verschiedenen Verzeichnissen auszuführen.kann nicht rmi-Server, wenn Code-Basis verwendet
Die einzige Lösung, die ich sehe, ist
rmiregistry -J-Djava.rmi.server.codebase = "Datei auszuführen:/D:/git/nnCloud/BE/nnCloudRESTService/target/Klassen-Datei:/D:/git/nnCloud/BE/nnCloudRESTService/target/classes "
Danach stürzt meine App bei registry.bind ab.
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: com.mycompany.nncloudrestservice.serverservice.ICalculationServerRegistrationService
Sie einen ClassNotFoundException bekommen; Das bedeutet höchstwahrscheinlich, dass in einem Ihrer Setups der ** Klassenpfad ** nicht so ist, wie er sein sollte. – GhostCat