您的位置:首页 > 产品设计 > UI/UE

weblogic Cannot parse POST parameters of request

2016-02-24 18:10 1876 查看
<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: