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



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

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

所以我共享了stub.class文件,该文件是在运行命令> rmic addmpl 后生成的。之后,它在远程计算机上也可以正常工作。

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

下面是My类和接口:

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

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

让我们假设您已经编译了

  1. 创建两个不同的目录

  2. 启动3命令提示符

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

    例如:c: rmiserver

    把所有文件放到这里

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

    例如:c: rmiclient

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

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

    允许在CLASSPATH

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

    在前两个命令提示符中的任意一个中运行rmiregistry 5000命令

    保持运行

  8. 在剩下的命令提示符中运行你的server "java MyServer"

  9. 在最后一个命令提示符中运行你的client "java MyClient",这是一个不同的目录

    如果这是工作,那么你的网络逻辑将工作

重复java.rmi.ServerException: RemoteException发生在服务器线程中(ClassNotFoundException)

最新更新