Tomcat 或JBOSS java.lang.ArrayIndexOutOfBoundsException: 8192原因及其解决方法

  2013-11-22 11:24:55 org.apache.catalina.connector.CoyoteAdapter service
严重: An exception or error occurred in the container during the request processing
java.lang.ArrayIndexOutOfBoundsException: 8192
 at org.apache.coyote.http11.InternalOutputBuffer.write(InternalOutputBuffer.java:711)
 at org.apache.coyote.http11.InternalOutputBuffer.write(InternalOutputBuffer.java:618)
 at org.apache.coyote.http11.InternalOutputBuffer.sendHeader(InternalOutputBuffer.java:491)
 at org.apache.coyote.http11.Http11Processor.prepareResponse(Http11Processor.java:1587)
 at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:934)
 at org.apache.coyote.Response.action(Response.java:183)
 at org.apache.coyote.Response.sendHeaders(Response.java:379)
 at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:305)
 at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:273)
 at org.apache.catalina.connector.Response.finishResponse(Response.java:486)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:232)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
 at java.lang.Thread.run(Thread.java:619)
2013-11-22 11:24:55 org.apache.coyote.http11.Http11Processor process
严重: Error finishing response
java.lang.ArrayIndexOutOfBoundsException
 at java.lang.System.arraycopy(Native Method)
 at org.apache.coyote.http11.InternalOutputBuffer.write(InternalOutputBuffer.java:680)
 at org.apache.coyote.http11.InternalOutputBuffer.sendStatus(InternalOutputBuffer.java:419)
 at org.apache.coyote.http11.Http11Processor.prepareResponse(Http11Processor.java:1576)
 at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:934)
 at org.apache.coyote.Response.action(Response.java:181)
 at org.apache.coyote.http11.InternalOutputBuffer.endRequest(InternalOutputBuffer.java:379)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
 at java.lang.Thread.run(Thread.java:619)

原因:

据说是Apache tomcat6的一个bug,需要增加maxHttpHeaderSize来处理。

tomcat的HttpHeaderSize默认值为8192,而你请求时超过了这个范围,可以修改这个这值已适应你的需求

解決方法:

Tomcat或JBoss的server.xml打开

指定maxHttpHeaderSize="8192"

<Connector port="8080" address="${jboss.bind.address}" maxThreads="250" maxHttpHeaderSize="8192"  

	emptySessionPath="true" protocol="HTTP/1.1"  

	enableLookups="false" redirectPort="8443" acceptCount="100"  

	connectionTimeout="20000" disableUploadTimeout="true" />  

例如:将maxHttpHeaderSize的值修改为:maxHttpHeaderSize="81920"

注意:

在AJP连接的场合,

不应使用maxHttpHeaderSize,而是指定packetSize。

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" packetSize="81920"  

maxThreads="150" scheme="https" secure="true"  

clientAuth="false" sslProtocol="TLS" />  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值