如何解决在OSGI关闭中控制退出代码
| 所以我启动了干净的OSGI关闭 关闭OSGi容器(特别是春分)的最佳方法 我使用bundle.stop()方法来实现相同目的。 现在出现问题,如果我发生紧急情况时调用bundle.stop(),那么执行干净关机意味着我的进程出口代码为0,有什么办法可以从中发送出口代码1呢?调用bundle.stop()之后的流程,以便流程使用者知道这不是正常关闭吗? 谢谢!解决方法
您应该使用
org.eclipse.equinox.app.IApplication
接口,该接口使您能够从start()
方法返回结果,然后从Java进程将其作为退出代码返回。如果您不想使用此API,以下代码显示了Equinox本身如何控制Java进程的退出代码:
import org.eclipse.osgi.service.environment.EnvironmentInfo;
private static EnvironmentInfo getEnvironmentInfo() {
BundleContext bc = Activator.getContext();
if (bc == null)
return null;
ServiceReference infoRef = bc.getServiceReference(EnvironmentInfo.class.getName());
if (infoRef == null)
return null;
EnvironmentInfo envInfo = (EnvironmentInfo) bc.getService(infoRef);
if (envInfo == null)
return null;
bc.ungetService(infoRef);
return envInfo;
}
public static void setExitCode(int exitCode) {
String key = \"eclipse.exitcode\";
String value = Integer.toString(exitCode); // the exit code
EnvironmentInfo envInfo = getEnvironmentInfo();
if (envInfo != null)
envInfo.setProperty(key,value);
else
System.getProperties().setProperty(key,value);
}
上面的代码不是一对一的,但是它给出了想法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。