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的代码中解决了什么问题。