我正在尝试使用 RMI 进行一些测试。
我有一个 .jar 文件,其中包含我需要调用的方法的类。在我的 netbeans 项目中,我有一个 TestClient 类,它必须连接到我的远程接口 ShareBroker。我的问题是如何为 java.rmi.server.codebase 设置正确的地址以及我需要在我的 TestClient 中拥有哪个地址才能查找 ShareBrooker。
我尝试了许多不同的地址和组合,但无法正常工作。对于这个测试,我需要在本地目录上设置代码库。
请检查您的远程接口可能没有扩展 java.rmi.Remote 接口
java.rmi.server.codebase 属性在导出远程对象的 JVM 上设置。通常这是服务器 JVM。
代码库 URL 必须引用此服务器的客户端可访问的目录或 JAR 文件。因此,它必须是一个 HTTP 或 FTP URL,指的是客户端可访问的 Web 服务器,或者是一个文件:指客户端本地文件系统的 URL。
在后一种情况下,(1)服务器必须知道客户端文件系统顺序的布局才能正确设置代码库属性,这会带来配置困难,并且(2)它所要完成的只是可以通过在客户端的 CLASSPATH 中包含该本地目录/JAR 文件并将代码库系统完全排除在外来完成。
换句话说,在引用本地文件系统的代码库中绝对没有意义。
为了让客户端访问远程服务,您应该拥有可供客户端使用的存根。这可以在客户端类路径中设置(您可以在项目构建路径中包含生成的存根)。
如果客户端的类路径中没有存根,则必须在远程服务中设置 java.rmi.server.codebase 属性。如果设置了,当客户端调用远程方法时,它将从指定的代码库。
以下链接可能有用.. https://community.oracle.com/thread/1180559?start=0 http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/codebase.html