同样的一个页面,访问频率比较小的时候就总是正常的,访问频率变大后就不时会出这个异常,具体异常信息如下:
java.lang.NullPointerException
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at gov.tax.commons.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6356)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
请问大家,这种情况是怎样造成的?是否有避免的方法?
另,相关页面和类数量比较多,而且代码量较大就不给出了.测试使用相当时间都没有出过问题.后来访问量变大了才出现这个问题
------解决方法--------------------------------------------------------
gov.tax.commons.SetCharacterEncodingFilter.doFilter这应该是你自己的类吧,跟踪到那里面看看
------解决方法--------------------------------------------------------
不一定是页面的问题, 有可能 是你的程序并发控制有问题, 人少的时候不会暴露出来,
使用的人的多了, 错误就出来.
------解决方法--------------------------------------------------------
struts本身应该不存在此问题的,我做的100用户,30秒一次操作,也没有此问题。
------解决方法--------------------------------------------------------
应为程序的问题?应用服务器应该没有问题,你用的是weblogic多少?
------解决方法--------------------------------------------------------
在 提交 按钮上加了JavaScript
提交时首先Disable这个按钮, 然后再提交,
就不会引起连续提交了.
------解决方法--------------------------------------------------------
你想偷懒。把你的java代码贴出来看看。不是报错了吗(SetCharacterEncodingFilter.java:71)
第71行有问题,看看你那行是什么代码,然后分析一下原因就行了啊。没代码,我怎么猜啊。
------解决方法--------------------------------------------------------
你的(SetCharacterEncodingFilter.java:71)附近的代码就是上面的代码吗?你上面贴的代码是没有任何问题的。应该是别的地方所导致的。但是这个和访问量没有关系,并发也没太大关系。肯定是程序本身有问题。
------解决方法--------------------------------------------------------
ignore = true 你用||得话,他每次都可以进来
所以request.getCharacterEncoding()可能是=NULL得
if(encoding != null)
request.setCharacterEncoding(encoding);
当你ENCODING= null时 是不执行得
所以你chain.doFilter(request, response);
所以发生NullPointerException 也是很正常得
------解决方法--------------------------------------------------------
楼上说的我觉得不正确
String encoding = selectEncoding(request);
这个方法已经进行设置了,而且楼上的这个文件实际上就是tomcat自带demo的过滤器文件,和例子完全一样,我也是使用的这个,目前没发现任何问题。估计是别的地方导致的。