在 Java 中,服务器如何更改其 RMI 客户端的线程 ID?
我有一个远程对象,它通过 Java RMI 为多个客户端提供服务,因此我需要远程对象能够识别其客户端。我正在考虑通过让远程对象调用 Thread.currentThread().setId() 来为客户端分配唯一的 id。我假设服务器将每个客户端视为一个单独的线程。
您能否向我展示如何仅使用一台机器来测试这种方法,该机器将同时扮演服务器和客户端部分?
如果您认为这行不通,我该如何解决这个问题?
谢谢。
I have a remote object that serves a number of clients via Java RMI and thus I need the remote object to be able to identify its clients. I'm thinking of assigning unique ids to client by having the remote object calling Thread.currentThread().setId()
. I'm assuming that the server will see each client as a separate thread.
Could you please show me how I can test this approach with only one machine, which will play both the server and client parts?
And if you think it will not work, how can I solve this problem?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你不能这样假设。 RMI 规范规定,不保证服务器线程和客户端线程之间的关联(如果有)。
您正在寻找的是 RemoteServer.getClientHost()。
You can't assume that. The RMI specification states that there are no guarantees about the association if any between server threads and client threads.
What you are looking for is RemoteServer.getClientHost().