0

更新

我后来发现这不是 Struts2 的问题,而是应用程序服务器的问题。在生产环境中,我的 tomcat 实例落后于 Apache,如果在 60 秒内没有响应,它会重试 HTTP 请求。我总是可以增加此限制,但出于我的目的,这不是一个可行的解决方案,因此我计划立即返回高延迟请求,生成一个requestToken并对此令牌进行长时间轮询,以查看是否已生成响应。


原始问题

我正在使用 Struts2 框架(版本 2.2.3)。有些动作需要 60 多秒才能解决。在这种情况下,当struts.devMode设置为falseie prod 环境设置时,struts2 会使用与之前相同的参数对操作进行重试,并且之前的操作仍在运行。struts.devMode设置为时不会发生这种情况true

只是重申这不会发生struts.devMode设置为true并且不落后的本地开发机器上apache

我可以通过从浏览器 ping 到这个方法来非常简单地重现这个(发生在 chrome、FF 中)

public String sleepForTime() {

    try {
        for (int ii=0; ii<sleepForSeconds; ii++) {
            System.out.println("\n\n\nSTART Sleeping iteration " + (ii+1));
            Thread.sleep(1000);
            System.out.println("END Sleeping iteration " + (ii+1));
        }

    } catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
    }

    return SUCCESS;
}

当我设置sleepForSeconds为小于 60 时,一切正常。但是,一旦我设置为以上任何内容,它就会每 60 秒再启动一个请求。我需要调整一个参数以使其不会发生吗?

4

0 回答 0