我一直在学习RMI,我开始使用Hello World程序,我开始工作,然后开始使用所有工作的其他示例程序。 (有错误,但我在google / stackoverflow的帮助下调试了它们)。现在我开始编写自己的项目,它基本上是一个旅行推销员实现,它将强烈的计算卸载到服务器上。
当我的所有服务器RMI实施突然崩溃时,一切正常。即。当我从Eclipse运行computeEngine作为RMI应用程序(我使用RMI插件)时,我得到错误:
java.rmi.ConnectException: Connection refused to host
或错误:
java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is: java.io.EOFException
我有4-5个不同的RMI应用程序都在运行,然后突然之间,我在服务器上运行的“ComputeEngine.java”文件开始为我的每个应用程序返回这两个错误中的一个。
注意:由于我正在测试这些应用程序,因此我使用“localhost”作为我的服务器主机名。换句话说,服务器和客户端是同一台机器。
我尝试过的事情:
当我在同一台计算机上运行服务器和客户端时,我不明白我是如何连接到主机的。
我先前对RMI和Java的狡猾道歉并遗漏了一些可能的明显解决方案。
我是否应该包含我尝试运行的任何源代码?
编辑:这是堆栈跟踪:
ComputeEngine exception:
java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.io.EOFException
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:227)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:377)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at engine.ComputeEngine.main(ComputeEngine.java:33)
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:267)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:213)
... 3 more
谢谢!
编辑2:
我注意到,如果我在启动应用程序时重新启动了RMIregistry(就像我在Eclipse RMI插件中选择了重新启动rmiregistry的选项一样),我会得到一个类在我的'codebase.jar中的类的ClassNotFoundError ”。
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: compute.Compute
有什么想法吗?