Permalänk
Medlem

Java RMI

Sitter här och försöker förstå mig på RMI. Jag sitter och testar med ett första exempel från sun på
http://java.sun.com/javase/6/docs/technotes/guides/rmi/hello/...

När jag försöker att köra servern så får jag fel på
registry.bind("Hello", stub);

Server exception: java.rmi.ConnectException: Connection refused to host: 83.233.150.xxx; nested exception is: java.net.ConnectException: Connection refused: connect java.rmi.ConnectException: Connection refused to host: 83.233.150.xxx; nested exception is: java.net.ConnectException: Connection refused: connect at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) at sun.rmi.server.UnicastRef.newCall(Unknown Source) at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) at sun.Server.main(Server.java:61) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) ... 6 more ]

Om jag testar att gå ut och skriva rmiregistry så får jag istället

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: RMI1.SimpleArith at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619) 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.rebind(Unknown Source) at java.rmi.Naming.rebind(Naming.java:160) at RMI1.SimpleArithServer.main(SimpleArithServer.java:10) Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: RMI1.SimpleArith at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.ClassNotFoundException: RMI1.SimpleArith at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:711) at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:655) at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:592) at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628) at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294) at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238) at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1531) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) ... 12 more

Hur ska jag göra för att få rätt på detta och få mina program att köra? Det känns som att jag har missat något fundamentalt här.

Visa signatur

Du är min fiende tills motsatsen är bevisad, och bevisbördan ligger hos dig.

Permalänk
Medlem

Du har ingen brandvägg som ligger och blockar?

Permalänk
Medlem

Nix, har testat att stänga av brandväggen helt t.o.m.

Visa signatur

Du är min fiende tills motsatsen är bevisad, och bevisbördan ligger hos dig.

Permalänk
Medlem

Nu hängde jag inte riktigt med på vad det andra exemplet skulle illustrera, men hade du eller hade du inte startat rmiregistryt?

Nu vad det ett tag sedan jag programmerade RMI, men har du definerat codebase på de ställen det eventuellt behövs?

Visa signatur

Fractal Design Define R3 | Asus Z170 Pro Gaming | Intel Core i7 6700K | 32 GB Corsair Vengaeance LPX DDR4 2666 MHz | Asus Radeon RX 580 | EVGA SuperNova 850 G2 | Kingston A400 480 GB SSD | 2 x WD Caviar Black 1TB | 2 x Crucial MX500 500 GB SSD

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Bergling
Nu hängde jag inte riktigt med på vad det andra exemplet skulle illustrera, men hade du eller hade du inte startat rmiregistryt?

Nu vad det ett tag sedan jag programmerade RMI, men har du definerat codebase på de ställen det eventuellt behövs?

Om du går in på länken så ser du exakt hur koden ser ut. När jag försöker köra serverprogrammet i eclipse så får jag det första felmedelandet. Vad jag kan förstå så ska jag inte behöva starta rmiregistry separat så som koden ser ut? Den gör ju

Registry registry = LocateRegistry.getRegistry(); registry.bind("Hello", stub);

Men när jag försöker att gå ut i cmd och starta rmiregistry och sen starta programmet i eclipse så får jag det andra felmedelandet.

Visa signatur

Du är min fiende tills motsatsen är bevisad, och bevisbördan ligger hos dig.

Permalänk
Medlem

Har fått samma meddelanden flera gånger, men glömmer nästan jämt bort vad de beror på
Ett problem som jag upptäckt är att Firefox ibland snor åt sig port 1099. Då måste man stänga ner Firefox, köra igång RMI-serverprogrammer som binder sig till port 1099 och sedan starta Firefox igen.

Om du vill undvika att behöva starta RMIRegistry manuellt kan du starta den från ditt program istället.

LocateRegistry.createRegistry( 1099 );

Om du inte redan känner till och använder det här pluginet till Eclipse kan jag rekommendera det: http://www.genady.net/rmi/index.html