You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免运行在Tomcat上的JSF应用出现408请求超时错误?

解决Apache Tomcat 8.5.14上JSF应用基础认证408超时问题

针对运行在Apache Tomcat/8.5.14的JSF应用,使用基础认证时未授权状态超过20分钟后登录触发408请求超时的问题,可通过以下方案解决:

1. 调整Tomcat会话超时时间

Tomcat默认会话超时为20分钟,这是触发问题的核心原因之一。修改会话超时设置:

  • 编辑Tomcat全局conf/web.xml或应用自身WEB-INF/web.xml中的<session-config>节点:
    <session-config>
        <session-timeout>30</session-timeout> <!-- 单位:分钟,根据需求调整 -->
    </session-config>
    
  • 优先以应用自身的web.xml配置为准,避免影响其他部署在Tomcat上的应用。

2. 调大Tomcat连接超时参数

Tomcat的连接超时设置会影响请求的完整接收时长,修改conf/server.xml中的Connector节点:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="600000" <!-- 10分钟,单位:毫秒 -->
           keepAliveTimeout="600000"
           redirectPort="8443" />
  • connectionTimeout:Tomcat等待客户端发送完整请求的超时时间,调大避免因等待超时返回408。
  • keepAliveTimeout:长连接的保持时间,确保未授权状态下连接不会过早断开。

3. 优化JSF视图状态超时

JSF服务器端保存的视图状态可能因超时失效,导致登录请求异常。在应用WEB-INF/faces-config.xml中添加或修改视图状态配置:

<application>
    <state-saving-method>server</state-saving-method>
    <server-state-timeout>1800000</server-state-timeout> <!-- 30分钟,单位:毫秒 -->
</application>

该配置控制服务器端视图状态的存活时间,建议与会话超时时间保持一致或略长。

4. 配置错误自动跳转

通过错误页面配置,让408/401错误自动重定向到登录页面,避免用户手动操作返回键:
在应用WEB-INF/web.xml中添加:

<error-page>
    <error-code>408</error-code>
    <location>/login.xhtml</location>
</error-page>
<error-page>
    <error-code>401</error-code>
    <location>/login.xhtml</location>
</error-page>

用户遇到超时错误时会直接进入登录页面,重新登录即可恢复操作。

5. 延长会话Cookie有效期

确保客户端浏览器不会提前清除Tomcat会话Cookie(JSESSIONID),编辑Tomcatconf/context.xml:

<Context>
    <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                     sameSite="Lax"
                     cookieMaxAge="1800" /> <!-- 30分钟,单位:秒 -->
</Context>

延长Cookie有效期,与会话超时时间匹配,避免客户端丢失会话标识导致的请求异常。

内容的提问来源于stack exchange,提问作者Nikolay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:07:33