【问题标题】:Restarting Apache2.4 Inside a Servlet Under Tomcat 6在 Tomcat 6 下的 Servlet 内重启 Apache2.4
【发布时间】:2015-03-18 11:14:52
【问题描述】:

当遇到错误 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)等错误。

Proxy (Apache 2.4) 和 Web Server (Tomcat) 的进程之间是否有关系?

【问题讨论】:

    标签: multithreading apache tomcat proxy ajp


    【解决方案1】:

    事实证明,重新启动会使代理在重新启动操作后立即重现完全相同的“待处理”请求。

    为了考虑到 httpd.conf 中的新值,我所要做的就是将 restart 指令替换为 graceful em>

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 1970-01-01
      • 2020-09-01
      • 2013-02-05
      • 1970-01-01
      • 2012-06-23
      • 2011-07-03
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多