如何编写java RMI回调或RMI侦听器或双向RMI

时间:2014-10-26 11:20:55

标签: java java-ee rmi observer-pattern

我正在编写RMI应用程序。

我能够执行RMI。数据通过RMI在客户端和服务器之间传输。

客户端应该始终接收/更新服务器端数据。

是否可以拥有一个可以从服务器向客户端传输或通知数据更新/修改的侦听器。 我的意思是每当在服务器端更新/修改数据时,客户端应该自动更新。 如果有任何可用于此任务的RMI Call be listener,请告诉我。

此外,执行RMI时要遵循的所有安全标准是什么?

我们如何通过客户端更新服务器端对象?如果我需要更新服务器端实例,我可以使用客户端更新它吗?

请指导我实现这一目标。

2 个答案:

答案 0 :(得分:1)

RMI回调与RMI服务器对象没有区别,只不过它是从客户端而不是服务器导出的。

然而,由于客户端防火墙,它通常是不可行的架构。使用远程回调作为监听器会产生很大的开销,即使在局域网内也通常是不可行的。你真的不想这样做。

问题的最后一部分是关于如何编写远程方法调用,您应该参考Oracle RMI教程。

答案 1 :(得分:0)

我在类似的服务器端应用程序上工作。我们处理它的方式是,客户端到服务器通信是同步的并且通过RMI(通过HTTP)。但是,从服务器对客户端的响应是通过JMS消息队列发送的。每个客户端都有一个客户端订阅的专用队列。在客户端登录时,将创建队列,并在注销时销毁队列。这样来自服务器的客户端响应本质上是异步的。客户响应能力也会提高。如果服务器响应本质上是同步的,则客户端可能已经冻结。