Java 访问RMI服务器
我想访问现有的RMI服务器。我没有访问其源代码的权限,因此我想设置一个调用RMI服务器中现有服务的客户端 创建客户端以调用特定方法的最佳方法是什么?RMI可以转换为Web服务吗 下面是我创建的类:Java 访问RMI服务器,java,rmi,Java,Rmi,我想访问现有的RMI服务器。我没有访问其源代码的权限,因此我想设置一个调用RMI服务器中现有服务的客户端 创建客户端以调用特定方法的最佳方法是什么?RMI可以转换为Web服务吗 下面是我创建的类: package server; import com.SerialService; import java.rmi.Naming; public class NewClass { public static void main(String args[]) { //Ser
package server;
import com.SerialService;
import java.rmi.Naming;
public class NewClass {
public static void main(String args[]) {
//SerialService obj = null;
try {
SerialService obj = (SerialService) Naming.lookup("//localhost:8083/");
System.out.println(obj.getSerial());
} catch (Exception e) {
e.printStackTrace();
}
}
}
您将需要获取RMI服务客户机存根,以便可以对其进行调用/编译。您仍然需要知道服务正在侦听的端口
import java.rmi.Naming;
public class RmiClient {
public static void main(String args[]) throws Exception {
RmiServerIntf obj = (RmiServerIntf)Naming.lookup("//localhost/RmiServer");
System.out.println(obj.getMessage());
}
}
你好,T,谢谢你的回复。我现在做的是访问编译后的.jar文件,并找到所需的接口。我正在导入它,但不知道接下来该怎么做。与您的建议相关,我如何获得RMI服务客户端存根?您好,我使用了您的示例,提供了正确的接口,但我遇到了一个异常:java.lang.ClassCastException:sun.RMI.registry.RegistryImpl_存根无法转换为服务。这是否意味着查找方法失败,在这种情况下,如何查找RMI服务器url?默认情况下,我读到它默认在端口1099(本地主机)上运行,是吗?更新您的问题,显示您的代码。您试图访问的服务器上的接口的名称是什么?@user3147473您不需要知道服务正在侦听的端口。您确实需要知道注册表正在侦听的端口;服务在注册表中绑定到的名称;您需要在客户端的类路径中提供它实现的远程接口,可能还有存根类。除非服务器上发生了非常奇怪的事情,否则您不可能从这个答案中的代码中得到
ClassCastException
。好的,有没有办法知道注册表正在侦听的端口?像命令一样?是否有列出所有注册服务的呼叫?