加载包含基于令牌的密钥的Windows密钥库(Windows-MY
)将java进程作为后台进程。
我已经注册了一个关闭钩子,钩子正在执行而Visual VM正在报告应用程序被终止,但是进程打开的端口没有被释放(比如jmx端口),除非使用显式终止进程任务经理。
使用的一个非常简单的测试用例如下所示,但为了测试案例,你必须插入一个密钥令牌。
public static void main(String[] args) throws Exception {
KeyStore keyStore = KeyStore.getInstance("Windows-MY");
keyStore.load(null, null);
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("Close");
}
});
//System.exit(1); even with explicit call to exit nothing is happening
}
编辑:看起来给出端口的例子弊大于利。我给出了jmx端口的示例,仅作为原始进程未终止的示例。如果进程终止,则释放端口。