[英]How can I destroy all OSGi blueprint components before the OSGi framework is stopped?
如果我停止OSGi框架,則不會破壞OSGi藍圖組件(不會調用銷毀方法)。 為什么會這樣,我如何銷毀它們。 我有自己的OSGi啟動器實現。 我正在使用關閉鈎子,然后停止OSGi框架:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
Launcher.logService.log(LogService.LOG_WARNING, "HANDLE SHUTDOWN");
if(Launcher.framework != null) {
try {
Launcher.framework.stop();
} catch (BundleException e) {
Launcher.logService.log(LogService.LOG_ERROR, "Shutdown" + ((Launcher.framework != null) ? " of " + Launcher.framework.getSymbolicName() + " " : " ") + "failed!", e);
System.exit(-1);
}
}
}
});
我們應該等待框架停止。
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
Launcher.logService.log(LogService.LOG_WARNING, "HANDLE SHUTDOWN");
if(Launcher.framework != null) {
try {
Launcher.framework.stop();
Launcher.framework.waitForStop(0); // !!!
} catch (BundleException e) {
Launcher.logService.log(LogService.LOG_ERROR, "Shutdown" + ((Launcher.framework != null) ? " of " + Launcher.framework.getSymbolicName() + " " : " ") + "failed!", e);
System.exit(-1);
}
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.