Bin gerade etwas am verzweifeln mit RMI. Der StartRegistryAndBind Server läuft auf einem Linux VPS und hat den Port 1099 freigebeben. Der Client auf meinem Windows den ich über die Shell ausführe. Der Code funktioniert lokal ausgeführt und bzgl. remote, wenn ich die "richtige" IP, Namebound und Port eintrage, dann verbindet er sich auch scheinbar mit dem Server nach einigen Sekunden, denn wenn ich den Port oder die IP ändere oder den Server ausschalte, dann kommt sofort die Meldung "Connection refused". Bei korrekten Angaben und laufenden Remote Host kommt quasi "System.out.println("Verbindung...");" auf seitens des Client, aber sobald der Client eine Remote Methode ausführen will bswp. "rs.sayHello()", kommt die unten gezeigte Fehlermeldung. Die Objekt Datei und das Interface liegt sowohl auf Server als auch auf Client Seite ...
Gibt es hier etwas was ich nicht beachtet habe? Gibt es zeitgemäße Tutorials?
Server:
Client:
Fehlermeldung seitens Client:
java.rmi.ConnectException: Connection refused to host: 12.143.141.421; nested exception is:
java.net.ConnectException: Connection timed out: connect
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:626)
at java.rmi/sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:217)
at java.rmi/sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:204)
at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133)
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:215)
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:160)
at jdk.proxy1/jdk.proxy1.$Proxy0.sayHello(Unknown Source)
Gibt es hier etwas was ich nicht beachtet habe? Gibt es zeitgemäße Tutorials?
Server:
Code:
try {
System.setProperty("java.rmi.server.hostname","12.143.141.421");
LocateRegistry.createRegistry(1099);
String name="//12.143.141.421/RemoteBookService";
RemoteService rs = new RemoteService();
Naming.bind(name, rs);
System.out.println("Service started");
} catch (RemoteException e) {
e.printStackTrace();
System.out.println("could not start registry");
}
Client:
Java:
String name = "rmi://12.143.141.421:1099/RemoteBookService";
IRemoteService rs = (IRemoteService) Naming.lookup(name);
System.out.println("Verbindung...");
rs.sayHello();
Fehlermeldung seitens Client:
java.rmi.ConnectException: Connection refused to host: 12.143.141.421; nested exception is:
java.net.ConnectException: Connection timed out: connect
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:626)
at java.rmi/sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:217)
at java.rmi/sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:204)
at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133)
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:215)
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:160)
at jdk.proxy1/jdk.proxy1.$Proxy0.sayHello(Unknown Source)