我使用 Runtime.getRuntime().exec() 在 GREG 处理程序中启动外部程序,并获取它的 pid。但是我如何检测 GREG 何时停止或重新启动,我可以停止或重新启动外部程序。
2 回答
如果您想在启动或关闭阶段执行一些自定义逻辑,您可以使用 org.wso2.carbon.core 包中提供的处理程序
例如
ServerStartupHandler - https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/ServerStartupHandler.java
ServerShutdownHandler - https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/ServerShutdownHandler.java
ServerRestartHandler - https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/ServerRestartHandler.java
没有记录在案的机制可以做到这一点。OSGi 空间中有一些内部机制,组件可以在其中定义依赖关系以检测它们是否已启动。但是,我认为这些不会暴露给处理程序 API。
一种方法是检查您是否可以从处理程序中成功访问资源,如果可以,则启动程序。