BEA weblogic 处理请求出现错误:Cannot parse POST parameters of request

来源:互联网 发布:人工智能的发展历史 编辑:程序博客网 时间:2024/05/16 17:46

[java] view plaincopy
  1. weblogic.utils.NestedRuntimeException: Cannot parse POST parameters of request: '/doSth.action'  
  2.         at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.mergePostParams(ServletRequestImpl.java:1816)  
  3.         at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.parseQueryParams(ServletRequestImpl.java:1703)  
  4.         at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.getQueryParams(ServletRequestImpl.java:1656)  
  5.         at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java:756)  
  6.         at org.apache.struts2.dispatcher.Dispatcher.prepare(Dispatcher.java:669)  
  7.         at org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:319)  
  8.         at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:367)  
  9.         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)  
  10.         at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)  
  11.         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)  
  12.         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)  
  13.         at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)  
  14.         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)  
  15.         at com.gisecur.webapp.intercepter.SessionFilter.doFilter(SessionFilter.java:71)  
  16.         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)  
  17.         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3393)  
  18.         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)  
  19.         at weblogic.security.service.SecurityManager.runAs(Unknown Source)  
  20.         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2140)  
  21.         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2046)  
  22.         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)  
  23.         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)  
  24.         at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)  
  25. Caused by: java.net.ProtocolException: EOF after reading only: '0' of: '68' promised bytes, out of which at least: '0' were already buffered  
  26.         at weblogic.servlet.internal.PostInputStream.complain(PostInputStream.java:93)  
  27.         at weblogic.servlet.internal.PostInputStream.read(PostInputStream.java:179)  
  28.         at weblogic.servlet.internal.ServletInputStreamImpl.read(ServletInputStreamImpl.java:222)  
  29.         at weblogic.servlet.internal.ServletRequestImpl$RequestParameters.mergePostParams(ServletRequestImpl.java:1791)  
  30.         ... 22 more  

 

工程在Tomcat6中运行正常,移到BEA Weblogic 10中如果访问其中的一个页面就出现Cannot parse POST parameters of request的异常。分析页面之后原来是因为页面中的js代码在初始化开始的时候请求了"doSth.action",然后在js结束的地方又重新请求了一次"doSth.action",这样会出现第一次的请求没有解析完,第二次请求又到了,这个时候http隧道被第二次占用了,导致第一次的请求非正常关闭,导致WebLogic服务器解析的第一次请求的参数无法读取请求结束符的错误:"EOF after reading only: '0' of: '68' promised bytes, out of which at least: '0' were already buffered".

 

Reference:

"If the client is getting the reset exception it will be the server that is doing the reset. There are several possible reasons for this:

a. It calls Socket.setSoLinger() before closing. Don't.
b. It closes the socket without reading all the data you have sent.
c. An intermediate firewall is misbehaving.
d. The server is using the WINSOCK API and is not calling WSAShutdown() or shutdown() before closing. Some MS products do this."

原创粉丝点击