-
最近项目中又遇到了一个郁闷的问题。一开始,是界面正常报错,又一个试算功能,在特定参数下会报错,查了下代码,发现很简单。就是一个dict,下拉框使用了数据字典形式。但是,这个dict的配置是有问题的,key是1,2,3,value是年月日。但是,数据库表中存储的却是Y.M的字母形式。 上去生产环境上把这个dict修改了一下。测试了一下,没问题。就放心的回去了。
-
然后下午就反应在IE浏览器上不行,在谷歌上可以。 上去又看了半天,拿下来日志看了半天,日志是这样的:
ava.net.SocketException: Connection reset
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:118) ~[na:1.7.0_65]
at java.net.SocketOutputStream.write(SocketOutputStream.java:159) ~[na:1.7.0_65]
at weblogic.utils.io.ChunkedOutputStream.writeTo(ChunkedOutputStream.java:193) ~[com.bea.core.utils_1.9.0.1.jar:1.9.0.1]
at weblogic.servlet.internal.ServletOutputStreamImpl.writeHeader(ServletOutputStreamImpl.java:167) ~[weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.ResponseHeaders.writeHeaders(ResponseHeaders.java:444) ~[weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.ServletResponseImpl.writeHeaders(ServletResponseImpl.java:1272) ~[weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.ServletOutputStreamImpl.sendHeaders(ServletOutputStreamImpl.java:281) ~[weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.ServletOutputStreamImpl.flush(ServletOutputStreamImpl.java:118) ~[weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.ServletResponseImpl.flushBuffer(ServletResponseImpl.java:186) ~[weblogic.jar:10.3.5.0]
at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176) ~[javax.servlet_1.0.0.0_2-5.jar:2.5]
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:283) ~[weblogic.jar:10.3.5.0]
at org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler.handleRequest(DefaultServletHttpRequestHandler.java:122) ~[spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) ~[spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) [spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) [weblogic.jar:10.3.5.0]
at com.vprisk.vpframe.xss.XssFilter.doFilter(XssFilter.java:124) [app-vpframe-mvc-2.6.2.jar:na]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) [weblogic.jar:10.3.5.0]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:186) [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) [spring-web-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) [spring-web-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) [weblogic.jar:10.3.5.0]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) [spring-web-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) [weblogic.jar:10.3.5.0]
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) [com.bea.core.weblogic.security.identity_1.1.2.1.jar:1.1.2.1]
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) [com.bea.core.weblogic.security.wls_1.0.0.0_6-1-0-0.jar:6.1.0.0]
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) [weblogic.jar:10.3.5.0]
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) [weblogic.jar:10.3.5.0]
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) [com.bea.core.weblogic.workmanager_1.10.0.0.jar:1.10.0.0]
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178) [com.bea.core.weblogic.workmanager_1.10.0.0.jar:1.10.0.0]
-
上网查了半天,没怎么看明白,主要是不知道应该在哪里修改。 没办法,又苦逼的上去再瞅瞅,然后,发现点眉目。生产上使用的是f5(负载均衡),然后有一个a节点和b节点。 a节点是主节点。weblogic也是部署在了a节点上。b节点是次节点,上面不部署weblogic。 在a节点上测试时ok的,在b节点上报错,和之前一样的报错。但是,以前的试算操作报错会正常打印hibernate的一些查询语句和一些其他的日志信息。但是,现在都没有,只要执行这个试算操作就会报上面的connection reset错误。 当然,其他功能正常。
-
最后,去看了界面的传参,发现a节点的传参是正常的,而b节点的传参中的那个下拉框dict还是传的1,2,3等,而不是已经修改过的Y,M等。 也就是说修改根本就没有在b节点上生效。 其实应该就是一个weblogic的缓存或者是f5的问题。 所以,就试着重启了一下。再看,果然就可以了。
-
不过,问题解决了,问题的缘由还是不太明白!Connection reset涉及到具体的生产情况的确很难找问题。