我必须从Java EE 5应用程序启动一个长时间运行的外部进程,并将此进程抽象为其他bean作为有状态的管理bean。流程的生命周期必须与Java EE应用程序的生命周期相关联。Java EE 5,如何在Singleton Bean上运行外部进程
简而言之,bean在初始化期间通过Runtime
API启动进程,并提供与进程交互,内部写入和读取IO通道的接口。这个过程始终开放。
必须确保容器仅实例化单个实例,并始终注入此特定实例。只要应用程序正在运行,实例就必须存在。实例应在部署期间初始化,并在取消部署或服务器关闭期间处理。因此,生命周期挂钩必须可用于在这些阶段打开和关闭流程。
如果这个bean捆绑在EAR中,或者作为独立的库模块部署,只要它在应用程序中可用并满足要求即可。
我知道有关注释@Singleton
和@ApplicationScoped
,但这些是Java EE 6注释。这在Java EE 5中如何实现?
让我想想....如果过程是以独立的方式(例如:windows服务)以“逻辑”的方式通过这个bean进行“物理”启动,那该怎么办? –
应用程序必须控制进程和生命周期必须绑定到应用程序 –
此外,JNI不是一个选项,因为JVM的稳定性必须得到保证 –