如何用Java RMI实现观察者模式?
我有一个客户端在服务器上启动一个长时间运行的进程。 我想定期向用户展示后台发生的情况。 最简单的方法是轮询服务器,但我想知道是否没有办法为此实现观察者模式。 不幸的是,我正在使用 RMI 与服务器通信,我担心我必须为此将我的客户端变成 RMI 服务器。
我还缺少另一种方式吗?
I have a client that starts a long running process on the server. At regular intervals, I'd like to show the user what's happening in the background. The most simple approach is to poll the server but I'm wondering if there wasn't a way to implement the Observer pattern for this. Unfortunately, I'm using RMI to talk to the server and I fear that I have to turn my client into an RMI server for this.
Is there another way that I'm missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
RMI 一般可以支持两种方式的通信。 (是的,RMI 是一个可以设置并执行其他任何操作的 PITA。)
但是,通过 CGI 脚本工作的 HTTP 传输(!)不支持它。
RMI can in general support two way communication. (And yeah, RMI is a PITA to set up, and do anything else with.)
However, the HTTP transport that works over a CGI script(!) does not support it.
综合这里的所有答案,我在客户端和服务器之间实现了2路RMI,服务器使用注册表公开其存根
以下代码将给出更好的想法
Consolidating all the answers here, I implemented 2 way RMI between client and server with server exposing its stub using Registry
The following code will gives a better idea
我不认为你错过了什么。 唯一的两种方法是定期调用服务器并检查状态(轮询)或注册服务器定期调用的回调(您的客户端必须公开一个方法)。 IMO,民意调查是处理这个问题的一种完全合理的方式。
I don't think you're missing anything. The only two ways are to either periodically call the server and check the status (polling) or register a callback which the server periodically calls (your client must expose a method). IMO, polling is a perfectly reasonable way to handle this.
http://sites.google.com /site/jamespandavan/Home/java/sample-remote-observer-based-on-rmi
http://sites.google.com/site/jamespandavan/Home/java/sample-remote-observer-based-on-rmi