以编程方式 refresh/restart 当前 Tomcat 实例
Programmatically refresh/restart current Tomcat instance
在密钥库中添加生成的 SSL 证书后,我需要 refresh/restart Tomcat。我正在使用 Java REST 调用来添加证书。
store.setKeyEntry("tomcat", keyPair.getPrivate(),
"password".toCharArray(), certs);
Refresh/restart 应该发生在同一个 REST 调用中。
我怎样才能做到这一点?
这是一个高级别的安全问题!你不能/不应该用 REST 调用重启你的服务器!这将为您的客户提供一种非常简单的方法来在您的数据中心生成 DOS 拒绝服务攻击,可能会限制其他服务!
如果您需要管理与您的资产相关的较低级别的软件/硬件服务,那么您不应使用您的应用程序级别的服务和协议,但您应该实施作为您的安全基础设施一部分的低级别管理协议!
为了更具体地说明你的情况,我会使用虚拟环境,例如VMWare 和相关协议以及动态设置/重置凭据和启动/重启服务器的调用! VMWare 虚拟服务很有可能还有一些具有 REST 服务的上层应用程序,您仍然可以从客户端使用(在 SSL 握手和所有相关安全句柄之后)调用 HTTP REST 来启动这些服务!
我同意 Gabor 关于安全漏洞的看法。我不知道你的用例,但如果你真的需要实现它,那么你需要创建一个简单的 tomcat 重启脚本并在添加证书后执行它。
解决方法如下post:how to restart tomcat from a running webapp?
我建议您使用 Apache Commons Exec
希望对您有所帮助。
我现在可以重新启动了。我使用批处理文件重新启动服务器。但是重启后,如果我再次尝试任何 REST 调用,它就会被挂起。它将在 10-15 分钟后工作。代码片段
public无效运行(){
try {
Thread.sleep(3000); // wait for response return
String path = SERVER_RESTART_SCRIPT;
Runtime rn = Runtime.getRuntime();
Process proc = rn.exec(path);
proc.waitFor();
System.exit(0);
} catch (IOException e) {
logger.error("IO exception: " + e);
} catch (InterruptedException e) {
logger.error("InterruptedException: " + e);
}
}
在密钥库中添加生成的 SSL 证书后,我需要 refresh/restart Tomcat。我正在使用 Java REST 调用来添加证书。
store.setKeyEntry("tomcat", keyPair.getPrivate(),
"password".toCharArray(), certs);
Refresh/restart 应该发生在同一个 REST 调用中。
我怎样才能做到这一点?
这是一个高级别的安全问题!你不能/不应该用 REST 调用重启你的服务器!这将为您的客户提供一种非常简单的方法来在您的数据中心生成 DOS 拒绝服务攻击,可能会限制其他服务!
如果您需要管理与您的资产相关的较低级别的软件/硬件服务,那么您不应使用您的应用程序级别的服务和协议,但您应该实施作为您的安全基础设施一部分的低级别管理协议!
为了更具体地说明你的情况,我会使用虚拟环境,例如VMWare 和相关协议以及动态设置/重置凭据和启动/重启服务器的调用! VMWare 虚拟服务很有可能还有一些具有 REST 服务的上层应用程序,您仍然可以从客户端使用(在 SSL 握手和所有相关安全句柄之后)调用 HTTP REST 来启动这些服务!
我同意 Gabor 关于安全漏洞的看法。我不知道你的用例,但如果你真的需要实现它,那么你需要创建一个简单的 tomcat 重启脚本并在添加证书后执行它。 解决方法如下post:how to restart tomcat from a running webapp?
我建议您使用 Apache Commons Exec
希望对您有所帮助。
我现在可以重新启动了。我使用批处理文件重新启动服务器。但是重启后,如果我再次尝试任何 REST 调用,它就会被挂起。它将在 10-15 分钟后工作。代码片段
public无效运行(){
try {
Thread.sleep(3000); // wait for response return
String path = SERVER_RESTART_SCRIPT;
Runtime rn = Runtime.getRuntime();
Process proc = rn.exec(path);
proc.waitFor();
System.exit(0);
} catch (IOException e) {
logger.error("IO exception: " + e);
} catch (InterruptedException e) {
logger.error("InterruptedException: " + e);
}
}