如何使用在同一网络中连接的计算机实现RMI?

时间:2015-06-10 13:12:18

标签: java rmi rpc

我尝试使用公司网络中连接的两台计算机实现RMI概念。我使用我的IP地址和特定的端口号绑定了远程对象。当我在我的本地机器上尝试时,一切正常。

现在,为了从其他计算机访问它,我与另一台计算机和客户端代码共享了Adder(扩展远程)接口.class文件。当我尝试访问它时,它抛出 ClassNotFoundException:stub not found

所以我分享了运行命令>>后生成的 stub.class 文件。 rmic AddImpl 。之后,它在远程计算机上也运行良好。

现在我的问题是,RMI是如何实现的?我们是否需要共享Adder接口和生成的存根类文件,以便客户端访问我们的远程方法?

以下是我的类和接口:

interface Adder extends Remote
class AddImpl extends UnicastRemoteObject implements Adder
class Server
class Client

1 个答案:

答案 0 :(得分:0)

您需要共享3个文件 Adder.class,Adder.java,AdderRemote_Stub.class(不是java代码)

我们假设你已经编译了

  1. 创建两个不同的目录

  2. 启动3命令提示符

  3. 为第一个目录(服务器)设置前2个命令提示符

    示例:c:\ rmiserver

    将所有文件放在此处

  4. 为第二个目录(客户端)设置最后1个命令提示符

    示例:c:\ rmiclient

    将客户端特定文件,存根和远程放在这里

  5. (可选)设置CLASSPATH =。在所有命令提示符

    这将允许在CLASSPATH

  6. 中识别当前目录文件
  7. important:在命令提示符下运行rmiregistry命令,其中服务器.class文件位于CLASSPATH中

    在前2个命令提示符

    中的任何一个中运行rmiregistry 5000命令

    让它继续运行

  8. 在前2个

  9. 的剩余命令提示符中运行您的服务器“java MyServer”
  10. 在最后一个命令提示符(另一个目录

    )中运行客户端“java MyClient”

    如果这是有效的,那么您的网络逻辑将起作用

  11. 重复java.rmi.ServerException: RemoteException occurred in server thread (ClassNotFoundException)