如何设计具有许多独立流程的企业应用程序?

时间:2013-08-08 12:45:18

标签: java java-ee design-patterns architecture jmx

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

这是Java中一个更具体的例子:

  1. 独立进程是一个独立的J2SE应用程序的多个实例,它接收关于“用户”实体的初始化数据,然后开始做关于这个“用户”的东西(这是一个无限的过程,所以任何批次的类型设计在这里是错误的,同样地,这些过程的开始时间是无关紧要的)

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

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

  4. 现在理想情况下,我希望(1)中的流程能够从(2)中的bean调用方法,但,以便(2)中的bean能够并更新有关事物的过程(1)。

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

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

    到目前为止,我最好的方法是通过JMX暴露这些J2SE应用程序并从那里开始,但我有一件事我不明白 - 谁或什么应该持有这种类型的密钥对列表“ URI X 负责用户 Y “,然后相应地指示调用。

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

    修改 另外,有没有办法在某些app-server上“托管”这样的独立进程?如果它们失败会重新生成进程的东西,允许在远程机器上部署和监视这些进程等。

1 个答案:

答案 0 :(得分:1)

自从我过去使用Java Message Service已经有一段时间了,所以我担心我不了解技术细节,但从您的描述来看,它似乎适合您的情况,处理管理GUI和客户端进程之间的通信。

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

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

关于缩放我不认为它比你剩下的bean的缩放更糟糕。尽管服务器关注的是他们的流程都是需要服务的所有客户端。

请带上上述建议:我不知道你的问题/设计的具体细节。我在一般方面说得更多。

我希望有帮助