Hallo,
ich habe versucht ein kleines RMI Beispiel zu machen, "Adder", sprich Client übergibt dem Server zwei Zahlen und der liefert daraufhin die Summe der beiden Zahlen zurück. Nur bekomme ich beim starten der Server.class folgende Fehlermeldung:
Exception in thread "main" java.rmi.NotBoundException: Adder
at sun.rmi.registry.RegistryImpl.lookup(Unknown Source)
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at test.rmi.Client.main(Client.java:13)
Process completed.
Meine Klassen sehen so aus:
Hat zufällig jemand eine Idee was ich da falsche mache?
"start rmiregistry" habe ich im Verzeichnis wo die einzelnen *.class liegen gemacht.
ich habe versucht ein kleines RMI Beispiel zu machen, "Adder", sprich Client übergibt dem Server zwei Zahlen und der liefert daraufhin die Summe der beiden Zahlen zurück. Nur bekomme ich beim starten der Server.class folgende Fehlermeldung:
Exception in thread "main" java.rmi.NotBoundException: Adder
at sun.rmi.registry.RegistryImpl.lookup(Unknown Source)
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at test.rmi.Client.main(Client.java:13)
Process completed.
Meine Klassen sehen so aus:
Java:
//Server:
package test.rmi;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RemoteServer;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
import java.rmi.NotBoundException;
public class Server {
public static void main(String[] args) throws RemoteException, NotBoundException{
try{
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
} catch (RemoteException e){System.err.println(e);
}
AdderImpl adder = new AdderImpl();
Adder stub = (Adder) UnicastRemoteObject.exportObject(adder, 0);
RemoteServer.setLog(System.out);
Registry registry = LocateRegistry.getRegistry();
registry.rebind("Adder", stub);
System.out.println("Adder angemeldet");
}
}
//Client
package test.rmi;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.RemoteException;
import java.rmi.NotBoundException;
public class Client{
public static void main(String[] args) throws RemoteException, NotBoundException{
Registry registry = LocateRegistry.getRegistry();
Adder adder = (Adder) registry.lookup("Adder");
System.out.println(adder.add(47,11));
}
}
//AdderImpl
package test.rmi;
public class AdderImpl implements Adder{
public int add(int x, int y){
return x+y;
}
}
//Adder
package test.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Adder extends Remote{
int add(int x, int y) throws RemoteException;
}
Hat zufällig jemand eine Idee was ich da falsche mache?
"start rmiregistry" habe ich im Verzeichnis wo die einzelnen *.class liegen gemacht.