问题描述
MyEclipse环境下通过websphere连接oracle数据库,在本机debug下出现异常,该问题不定期出现.websphereapplicationserver版本为6.1.0.0具体错误信息如下:[11-2-2416:54:50:468CST]0000002bSRTServletReqESRVE0133E:解析参数时发生错误。java.io.IOException:AsyncIOoperationfailed,reason:RC:10054远程主机强迫关闭了一个现有的连接。atcom.ibm.io.async.AbstractAsyncChannel.multiIO(AbstractAsyncChannel.java:443)atcom.ibm.io.async.AsyncSocketChannelHelper.read(AsyncSocketChannelHelper.java:194)atcom.ibm.ws.tcp.channel.impl.AioSocketIOChannel.readAIOSync(AioSocketIOChannel.java:205)atcom.ibm.ws.tcp.channel.impl.AioTCPReadRequestContextImpl.processSyncReadRequest(AioTCPReadRequestContextImpl.java:150)atcom.ibm.ws.tcp.channel.impl.TCPReadRequestContextImpl.read(TCPReadRequestContextImpl.java:109)atcom.ibm.ws.http.channel.impl.HttpServiceContextImpl.fillABuffer(HttpServiceContextImpl.java:4126)atcom.ibm.ws.http.channel.impl.HttpServiceContextImpl.readSingleBlock(HttpServiceContextImpl.java:3366)atcom.ibm.ws.http.channel.impl.HttpServiceContextImpl.readBodyBuffer(HttpServiceContextImpl.java:3485)atcom.ibm.ws.http.channel.inbound.impl.HttpInboundServiceContextImpl.getRequestBodyBuffer(HttpInboundServiceContextImpl.java:1680)atcom.ibm.ws.webcontainer.channel.WCCByteBufferInputStream.bufferIsGood(WCCByteBufferInputStream.java:105)atcom.ibm.ws.webcontainer.channel.WCCByteBufferInputStream.read(WCCByteBufferInputStream.java:78)atcom.ibm.ws.webcontainer.srt.http.HttpInputStream.read(HttpInputStream.java:286)atcom.ibm.ws.webcontainer.servlet.RequestUtils.parsePostData(RequestUtils.java:297)atcom.ibm.ws.webcontainer.srt.SRTServletRequest.parseParameters(SRTServletRequest.java:1336)atcom.ibm.ws.webcontainer.srt.SRTServletRequest.getParameterNames(SRTServletRequest.java:1015)atorg.apache.struts.util.RequestUtils.populate(RequestUtils.java:459)atorg.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)atorg.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)atorg.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)atorg.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:763)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:856)atcom.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966)atcom.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:907)atcom.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)atXXXXX.filter.EncodingFilter.doFilter(EncodingFilter.java:65)atcom.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)atcom.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)atXXXXX.filter.ATSCFilter.doFilter(ATSCFilter.java:106)atcom.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)atcom.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)atcom.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)atcom.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:696)atcom.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:641)atcom.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475)atcom.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463)atcom.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:92)atcom.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)atcom.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1425)atcom.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:92)atcom.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)atcom.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394)atcom.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)atcom.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152)atcom.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213)atcom.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195)atcom.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)atcom.ibm.io.async.ResultHandler.complete(ResultHandler.java:193)atcom.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:725)atcom.ibm.io.async.ResultHandler$2.run(ResultHandler.java:847)atcom.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1498)
解决方案
解决方案二:
问题已经搞定,是因为在页面提交form操作后执行了立即关闭页面的操作,有可能在form数据取得前页面关闭完成,导致服务器没能取到完整的数据。
解决方案三:
原来应用是在Hibernat下开发的,查询语句被它加了自己的函数,导致原先建的索引无法起作用(应用建立索引的时候犯了低级错误),后来重新建立索引后,查询很快完成,连接池繁忙数量降低到0~5,应用恢复正常。原来是数据库的查询时间过长,导致线程都在等待数据库的返回信息,100个线程很快被用完,无法响应新的服务,因为数据库连接池资源已经开大,所以没有这方面的报错。
解决方案四:
服务器的问题,不用管理