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

标签 java jakarta-ee design-patterns architecture jmx

我应该如何设计一个由大量(但相同)独立进程组成的应用程序,这些进程需要将数据传送到企业应用程序并通过 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 应用程序,然后从那里开始,但我有一点不明白 - 谁或什么应该持有“该过程的 key 对列表” URI X 负责用户 Y”,然后相应地引导调用。

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

编辑: 另外,有没有办法在某些应用程序服务器上“托管”此类独立进程?如果进程失败,将重新生成进程,允许在远程计算机等上部署和监视此类进程?

最佳答案

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

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

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

关于缩放,我认为它不会比其余 bean 的缩放更糟糕。对于服务器而言,它们处理的都是需要服务的客户端。

请对上述建议持保留态度:我不知道您的问题/设计的具体情况。我更多地是在一般意义上谈论。

希望有帮助

关于java - 如何设计一个具有许多独立流程的企业应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18126395/

相关文章:

java - 执行清理并将异常传递给调用者

java - 在maven中创建可执行jar文件, list 中缺少主类

java - PDFbox遇到错误(如何计算非简单字体的位置)

oop - 如何实现功能共享相同逻辑的接口(interface)?

java - java中的数据库连接

java - 来自 jaxws-tools :3. 0.0 的 Wsimport 在 ClassNotFoundException 上崩溃

jsp - Servlet 处理多个 post 请求

java - JPA:关于在删除之前合并实体的问题

java - 使用通用对象的包装器,而不是特定的对象

.net - IAsyncResult 接口(interface)的正确实现是什么?