在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);
}
上面的代码不是一对一的,但是它给出了想法。     

要回复问题请先登录注册