<2016-2-24 上午10时50分54秒 CST> <Error> <HTTP> <BEA-101017> <[ServletContext@477594602[app:EAR module:web path:/web spec-version:2.5]] Root cause of ServletException.
weblogic.utils.NestedRuntimeException: Cannot parse POST parameters of request: '/web/material/reqplan/reqplan/queryRequirementList.sc'
at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.mergePostParams(ServletRequestImpl.java:2144)
at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.parseQueryParams(ServletRequestImpl.java:2024)
at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.getQueryParams(ServletRequestImpl.java:1918)
at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.getParameterNames(ServletRequestImpl.java:1953)
at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.access$900(ServletRequestImpl.java:1817)
Truncated. see log file for complete stacktrace
Caused By: java.net.ProtocolException: EOF after reading only: '0' of: '75' promised bytes, out of which at least: '0' were already buffered
at weblogic.servlet.internal.PostInputStream.complain(PostInputStream.java:93)
at weblogic.servlet.internal.PostInputStream.read(PostInputStream.java:179)
at weblogic.servlet.internal.ServletInputStreamImpl.read(ServletInputStreamImpl.java:228)
at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.mergePostParams(ServletRequestImpl.java:2118)
at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.parseQueryParams(ServletRequestImpl.java:2024)
Truncated. see log file for complete stacktrace
>
<2016-2-24 上午10时50分54秒 CST> <Error> <Kernel> <BEA-000802> <ExecuteRequest failed
java.lang.IllegalStateException: Response already committed.
java.lang.IllegalStateException: Response already committed
at weblogic.servlet.internal.ServletResponseImpl.objectIfCommitted(ServletResponseImpl.java:1608)
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:626)
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:591)
at weblogic.servlet.internal.ErrorManager.handleException(ErrorManager.java:150)
at weblogic.servlet.internal.WebAppServletContext.handleThrowableFromInvocation(WebAppServletContext.java:2348)
Truncated. see log file for complete stacktrace
>
As you say, there is an IE bug that may cause to send the post's header only. Well, this happens when a connection to the server times out, and IE tries to send a post through that connection. At first the post it is rejected, so it reopens that connection, and that's when IE sends only the header. So to solve this you have to make sure that no one else closes the connections with IE, except itself. In our case we only had to set a couple of timeouts above the IE's keep-alive one (which is 60 seconds by default):
Weblogic Console,POST默认的超时时间是30s;而IE对连接的保持时间是60s,也即IE认为连接还在,但实际上连接已经被Weblogic关了,导致后续用的时候就报错了。
解决方案:
在weblgoic的console中:xxDomain->Servers->xxServer->Protocols->HTTP Post Timeout:30 默认为30,改为80