Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问RMI服务器_Java_Rmi - Fatal编程技术网

Java 访问RMI服务器

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

我想访问现有的RMI服务器。我没有访问其源代码的权限,因此我想设置一个调用RMI服务器中现有服务的客户端

创建客户端以调用特定方法的最佳方法是什么?RMI可以转换为Web服务吗

下面是我创建的类:

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
。好的,有没有办法知道注册表正在侦听的端口?像命令一样?是否有列出所有注册服务的呼叫?