Java 为什么我的RMI服务器在客户端可以连接之前退出?

Java 为什么我的RMI服务器在客户端可以连接之前退出?,java,rmi,Java,Rmi,启动程序在指定端口上运行后,程序在客户端能够连接到它之前终止 try { StudentService obj = new StudentService(); Registry r = LocateRegistry.createRegistry(4200); r.bind("localhost", obj); } catch (RemoteException e) { // TODO Auto-generated

启动程序在指定端口上运行后,程序在客户端能够连接到它之前终止

    try {
        StudentService obj = new StudentService();
        Registry r = LocateRegistry.createRegistry(4200);
        r.bind("localhost", obj);

    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (AlreadyBoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
这是位于已被重写的StudentService类中的方法

int multiply(int s, int b) throws RemoteException {
    return s * b;
}

根据文件

UnicastRemoteObject.exportObject导出提供的远程对象,以在匿名TCP端口上接收传入的远程方法调用,并返回存根,以便远程对象传递给客户端

因此,您的程序在未侦听传入连接的情况下结束也就不足为奇了。这应该行得通

try {
    StudentService obj = new StudentService();
    UnicastRemoteObject.exportObject(obj, 0);

    Registry r = LocateRegistry.createRegistry(4200);
    r.bind("localhost", obj);

} catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (AlreadyBoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

此处没有“连接”丢失。在RMI中没有连接这样的东西。你的JVM正在退出。注意,这是你两篇文章中第二个完全错误的标题。您需要更精确地了解实际发生的事情。@EJP Ok。我想这解决了我的问题。感谢您考虑在stack overflow中对您认为有帮助的问题和答案进行投票,以便对其他人有所帮助。谢谢:)@KMuir仅当
StudentService
未扩展
UnicastRemoteObject
时才需要导出步骤,这是无法从您的问题中确定的事实。我看不到引用的文档摘要如何解释此问题,或者代码段如何回答此问题,或者OP的代码中解决了什么问题。