如何检测碳启动或停止

How to detect while carbon starting or stopping

我使用 Runtime.getRuntime().exec() 在 GREG 处理程序中启动外部程序,并获取其 pid。但是我如何检测 GREG 何时停止或重新启动,我可以停止或重新启动外部程序。

没有记录在案的执行此操作的机制。 OSGi space 中有一些内部机制,组件可以在这些机制中定义依赖关系,以便在这些机制启动时对其进行检测。但是,我认为这些不会暴露给处理程序 API。

一种方法是检查您是否可以从处理程序中成功访问资源,如果可以,则启动程序。

如果您想在启动或关闭阶段执行一些自定义逻辑,您可以使用 org.wso2.carbon.core package

中提供的处理程序

例如

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

你也可以使用https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/ServerStartupObserver.java来监听启动事件