在Tomcat 6下重新启动Servlet内的Apache2.4

时间:2015-03-18 11:14:53

标签: multithreading apache tomcat proxy ajp

我有一个代理,在遇到错误403时会重定向到Java Web-App。

此应用程序检查用户的凭据:如果用户已获得授权,则客户端IP地址将添加到授权IP地址列表中,并包含在Apache2.4的httpd.conf中。

因此,将使用以下命令重新启动代理:

synchronized (Runtime.getRuntime()) {
    Runtime.getRuntime().exec("...apachectl -k restart").waitFor();
}

这是在Windows下使用代理进行本地测试的,它运行得很好;但是当我开始使用Linux(Ubuntu 14)时,行为发生了变化,例如“连接被重置”或“没有收到数据”(分别是Firefox,Chrome)。

代理(Apache 2.4)和Web服务器(Tomcat)的进程之间是否存在关系?

1 个答案:

答案 0 :(得分:0)

原来,重新启动会使代理重现完全相同的"待定"重新启动操作后立即请求。

要考虑httpd.conf中的新值,我所要做的就是用 graceful <替换 restart 指令EM>

&#13;
&#13;
synchronized (Runtime.getRuntime()) {
    Runtime.getRuntime().exec("...apachectl -k graceful").waitFor();
}
&#13;
&#13;
&#13;

这样,该过程不会重启,但httpd.conf中的更改将生效,因此整个机制不会受到影响。