我使用Runtime.getRuntime()。exec()在GREG处理程序中启动外部程序,并获取其pid。但是我如何检测GREG何时停止或重新启动,我可以停止或重新启动外部程序。
答案 0 :(得分:1)
没有记录在案的机制。 OSGi空间中有一些内部机制,组件可以定义依赖性,以便在启动时拒绝。但是,我认为这些都不会暴露给处理程序API。
一种方法是检查是否可以从处理程序中成功访问资源,如果是,则启动程序。
答案 1 :(得分:1)
如果要在启动或关闭阶段执行某些自定义逻辑,可以使用org.wso2.carbon.core包中提供的处理程序
e.g。
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