发布于2021-10-29 21:32 阅读(1424) 评论(0) 点赞(24) 收藏(4)
我有一个 Java RMI 应用程序。问题是当我调用RMI方法时,然后完成代码。申请并没有结束。
在命令行中,显示“Bye”消息,但不显示提示行。
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
}
我必须 ^C 才能停止应用程序。
act() 方法解析用户的输入以调用其他方法。但是,即使我只是退出而不调用任何其他方法,Java 也不会退出。
可能有什么问题?我是否需要调用额外的方法来退出 RMI 应用程序?
它看起来像是ClientImpl
一个远程对象并且它仍然被导出,所以 JVM 不会退出,直到你取消导出它,UnicastRemoteObject.unexportObject()
.
如果是这样,我不知道为什么ClientImpl
even是一个远程对象。你没有用它做任何远程操作。你不和远程做任何事情在这里除了注册表。我认为你有一些事情回到前面。您应该在s
查找的远程对象上调用远程方法。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/306510/803b4b2996db410a902d/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!