0

我是 RMI 和弹簧的新手,需要一些关于我们正在实施的功能的帮助。

我们正在使用 java 创建聊天软件,并希望将 RMI 与 springs 一起使用。我可以使用 RMIServerExporter、接口等相当轻松地设置客户端服务器交互。

我能想到的问题是客户端需要从服务器汇集数据。我们需要不断检查新消息。由于其他原因,我们无法从服务器推送数据。

如何使用弹簧设置 RMI,以便客户端从服务器汇集数据。我查找了回调,但这涉及从服务器推送!?

有没有办法做到这一点。如果您需要我进一步解释,请告诉我

4

1 回答 1

0

RMI 只是用于客户端-服务器通信的传输协议。在客户端,一旦您的RmiProxyFactoryBean在 Spring 容器中正确定义和初始化,在何处、何时以及如何使用此服务 bean 完全取决于开发人员。对于服务器池实现,我们通常使用ScheduledThreadPoolExecutor在给定的时间间隔内调度 RMI 调用,例如:

public class ChatClient {
  // Defined and wired as RmiProxyFactoryBean in applicationContext.xml
  private ChatService chatService;

  private ScheduledExecutorService scheduleTaskService;

  ... ...

  // At some point during chat application running life cyle:
  scheduleTaskService = Executors.newScheduledThreadPool(5);

  // This schedule pooling task to run every 2 minutes:
  scheduleTaskService.scheduleAtFixedRate(new Runnable() {
    public void run() {
      // Pooling server using RMI call:
      chatService.poolingData();
    }
  }, 0, 2, TimeUnit.MINUTES);

  ... ...

}

对于更企业级的解决方案,我们通常使用Quartz,查看这篇博客文章作为一个实例。

于 2012-10-18T22:30:26.063 回答