以编程方式刷新/重新启动当前的Tomcat实例

时间:2015-09-28 08:42:07

标签: java tomcat restart

我需要在密钥库中添加生成的SSL证书后刷新/重启Tomcat。我正在使用Java REST调用来添加证书。

Dequeue Element

刷新/重启应该在同一个REST调用中进行。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

这是一个高级别的安全问题!您不能/不应该使用REST调用重新启动服务器!这将为您的客户提供一种在数据中心中生成DOS拒绝服务黑客的非常简单的方法,可能会限制其他服务!

如果您需要管理与资产相关的较低级软件/硬件服务,则不应使用应用程序级服务和协议,但应实施低级管理协议,这是您安全基础架构的一部分!

在您的情况下更具体一点,我会使用虚拟环境,例如VMWare及相关协议和调用设置/重置凭据以及动态启动/重启服务器! VMWare虚拟服务很可能还有一些上层应用程序,这些应用程序具有REST服务,您仍然可以使用它(在SSL握手和所有相关安全句柄之后)从客户端调用HTTP REST来启动这些服务!

答案 1 :(得分:0)

我同意Gabor的安全漏洞。我不知道你的用例,但是如果你真的需要实现它,那么你需要创建一个简单的tomcat重启脚本并在添加证书后执行它。 解决方案在以下帖子中进行了描述:how to restart tomcat from a running webapp?

我建议您使用Apache Commons Exec

希望有所帮助。

答案 2 :(得分:0)

我现在可以重新开始了。我用批处理文件重启服务器。但重新启动后,如果我再次尝试任何REST调用,它将被绞死。它将在10-15分钟后工作。代码段

public void run(){

    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);
    }

}