Użyłem Runtime.getRuntime ().exec (), aby uruchomić program zewnętrzny w module obsługi GREG i uzyskać jego pid. Ale jak mogę wykryć, kiedy GREG zatrzymuje się lub restartuje, że mogę zatrzymać lub ponownie uruchomić program zewnętrzny.
Odpowiedzi:
1 dla odpowiedzi № 1Jeśli chcesz wykonać niestandardową logikę podczas fazy uruchamiania lub zamykania, możesz użyć programów obsługi zawartych w pakiecie org.wso2.carbon.core
na przykład
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
Możesz także użyć https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/ServerStartupObserver.java słuchać zdarzeń startowych
1 dla odpowiedzi nr 2
Nie ma udokumentowanego mechanizmu tego. Istnieją pewne wewnętrzne mechanizmy w przestrzeni OSGi, w których komponenty mogą definiować zależności, które mają zniechęcać, jeśli zostaną uruchomione. Jednak nie sądzę, że są one narażone na API obsługi.
Jednym ze sposobów jest sprawdzenie, czy możesz uzyskać dostęp do zasobu z poziomu modułu obsługi, a jeśli tak, to uruchom program.