我有一个Java RMI应用程序.问题是,当我调用RMI方法,然后完成代码.该应用程序没有结束.
在命令行中,显示"再见"消息,但它不显示提示行.
public static void main(String args[]) throws Exception {
...
System.setSecurityManager(new RMISecurityManager());
s = (Registry) Naming.lookup("rmi://localhost/Registry");
ChatClientImpl c = new ChatClientImpl(name);
c.act(s);
System.out.println("Bye"); <-- "Bye" message is shown
}
Run Code Online (Sandbox Code Playgroud)
我必须^ C才能停止应用程序.
act()方法解析use的输入以调用其他方法.但是,即使我只是在不调用任何其他方法的情况下退出,Java也不会退出.
可能有什么问题?我是否需要调用额外的方法才能退出RMI应用程序?
它看起来像是ClientImpl一个远程对象,它仍然被导出,因此JVM将不会退出,直到你取消它为止UnicastRemoteObject.unexportObject().
如果是这样,我不知道为什么ClientImpl甚至是一个远程对象.你没有做任何遥远的事情.除了注册表之外,你没有做任何远程任何事情.我觉得你有一些东西回到前面.您应该在s您查找的远程对象上调用远程方法.
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |