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

JBoss5+Struts1 Ajax响应数据超8k被截断 配置求助

解决AJAX GET请求JSON响应超过8k被截断的问题

针对你遇到的问题,调整maxHttpHeaderSize无效是因为这个参数仅控制请求头的大小,而响应截断的根源在其他配置或代码环节,以下是需要检查和调整的关键点:

  • 调整Struts2 JSON Result的缓冲区大小
    Struts2的JSON Result默认输出缓冲区可能为8k,超过阈值就会触发截断。在struts.xml的JSON Result配置中增加bufferSize参数,设置为更大的值(比如64k):

    <action name="yourTargetAction" class="com.yourpackage.YourActionClass">
        <result type="json">
            <param name="bufferSize">65536</param> <!-- 按需调整为合适的缓冲区大小 -->
        </result>
    </action>
    
  • 修改JBoss(Tomcat) Connector的响应缓冲区配置
    JBoss5底层基于Tomcat,需调整Connector的socketBufferSize参数(控制响应输出的缓冲区大小),同时保留已调整的maxHttpHeaderSize设置。在JBoss的server/default/deploy/jbossweb.sar/server.xml中修改Connector节点:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxHttpHeaderSize="16384" <!-- 保持已配置的请求头大小 -->
               socketBufferSize="65536" /> <!-- 增大响应输出缓冲区 -->
    
  • 排查Action代码中的硬编码限制
    检查你的Action类是否手动设置了Content-Length响应头,如果代码中硬编码了固定值(比如8192),会强制截断响应。确保移除这类手动设置,让容器自动计算并设置正确的响应长度:

    // 错误示例:请勿手动设置固定长度
    // response.setContentLength(8192);
    
  • 确认Stream Result的配置(若自定义输出)
    如果你的Action通过Stream Result输出JSON,需调整Stream Result的bufferSize参数,且避免手动设置contentLength(让容器自动处理长度计算):

    <result type="stream">
        <param name="contentType">application/json</param>
        <param name="bufferSize">65536</param>
        <!-- 不要设置固定的contentLength参数 -->
    </result>
    

调整完成后重启JBoss,测试大体积JSON响应是否正常输出。

内容的提问来源于stack exchange,提问作者Sérgio Abreu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:10:11