【发布时间】:2017-08-31 08:08:07
【问题描述】:
我必须从 Java EE 5 应用程序启动一个长时间运行的外部进程,并将这个进程抽象为其他 bean 作为有状态托管 bean。进程的生命周期必须与 Java EE 应用程序的生命周期相关联。
简单地说,bean在初始化过程中通过Runtime API启动进程,并提供与进程交互的接口,内部在IO通道上读写。该进程始终处于打开状态。
必须确保容器仅实例化单个实例,并始终注入此特定实例。只要应用程序正在运行,该实例就必须存在。实例应在部署期间初始化,并在取消部署或服务器关闭期间处置。因此,生命周期挂钩必须可用于在这些阶段打开和关闭进程。
这个 bean 是捆绑在 EAR 中,还是部署为不同的库模块都没有关系,只要它在应用程序中可用并且满足要求。
我知道@Singleton 和@ApplicationScoped 之类的注释,但这些是Java EE 6 注释。这在 Java EE 5 中怎么可能实现?
【问题讨论】:
-
让我想想……如果进程以独立方式“物理”启动(例如:Windows 服务)并通过此 bean “逻辑”控制会怎样?
-
应用程序必须控制进程并且生命周期必须与应用程序绑定
-
另外,这里不能选择JNI,因为必须保证JVM的稳定性
标签: jakarta-ee process singleton weblogic