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
また、https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/ServerStartupObserver を使用することもできます。起動イベントをリッスンするJava
これを行うための文書化されたメカニズムはありません。OSGi スペース内には、コンポーネントが依存関係を定義して、開始されているかどうかをテストできる内部メカニズムがいくつかあります。ただし、それらがハンドラー API に公開されているとは思いません。
1 つの方法は、ハンドラー内からリソースに正常にアクセスできるかどうかを確認し、そうであればプログラムを開始することです。