0

我应该如何设计一个由众多(但相同)独立进程组成的应用程序,这些进程需要将数据传送到企业应用程序并通过 Web 界面进行监控和访问?

这是Java中更具体的示例:

  1. 独立进程是独立 J2SE 应用程序的多个实例,它接收有关“用户”实体的初始化数据,然后开始执行有关该“用户”的操作(这是一个无限的进程,因此任何批处理类型的设计在这里都是错误的,并且同样,这些过程的开始时间也无关紧要)

  2. 企业应用程序是一组 J2EE bean 和 Web 服务,它们实现了业务逻辑、数据库访问等,并且(例如)托管在 GlassFish 上。

  3. Web 前端是一组与 bean 一起工作的 JSP(可能也在 GlassFish 上)。

现在,理想情况下,我希望 (1) 中的进程能够从 (2) 中的 bean 调用方法,而且 (2)中的 bean能够更新进程 (1) 关于事物的方法。

因此,这些是所需的执行流程,假设有 10 个独立进程(1)为 10 个不同的用户运行(考虑一个“用户”,可以通过一个数字轻松识别):

  • 在 (1) 的一个过程中发生了一些事情,它们使用一些数据从企业应用程序 (2) 调用一个方法。
  • 一个真实的人类用户(已经被网络应用程序识别)点击(3)的网页上的某些东西,这会调用(2)中的一个方法,然后是一些“神奇”实体(我有不知道如何命名)从 (1) 中找到负责该特定用户的独立进程,并使用一些新数据更新该进程。

到目前为止,我最好的方法是通过 JMX 公开这些 J2SE 应用程序并从那里开始,但我有一件事我不明白 - 谁或什么应该持有这样的密钥对列表“URI X处的过程是负责用户Y ”,然后相应地引导呼叫。

顺便说一句,请随时在 Java 平台(!)之外提供任何建议,只要它是一个可以轻松扩展的平台。

编辑: 另外,有没有办法在某些应用服务器上“托管”这样的独立进程?如果它们失败会重新生成进程,允许在远程机器上部署和监视这些进程等?

4

1 回答 1

1

自从我过去使用 Java 消息服务以来已经有一段时间了,所以恐怕我不了解最新的技术细节,但从你的描述来看,它似乎适合你的情况,处理管理 GUI 和客户端进程。

有多种选择(我相信你对异步通信感兴趣),所以你应该看看最新的发展来检查自己是否适合你的情况。

关于服务器将与进程交换的数据大小,我认为这是一个不同的话题,我必须说答案取决于。发送消息中的所有数据会更好吗?或者该消息是否只是一个通知,以便通知客户端然后连接到某个企业 bean 以检查一些新状态?我更喜欢后一种情况,但这是你应该根据你的要求决定的。我不会盲目地排除第一个选项,除非我有一些明显的证据表明这不起作用。

关于缩放,我认为它不会比其他豆子的缩放更糟。就服务器而言,它们的进程都是需要服务的客户端。

请对上述建议持保留态度:我不知道您的问题/设计的细节。我说的更多是笼统的。

我希望这会有所帮助

于 2013-08-08T13:40:32.167 回答