Kun*_*Jha 3 java struts servlets weblogic
我正在生产系统上运行Weblogic 8.1 SP6服务器(JDK 1.4.2).现在,在服务器出现故障之前,我们在生产服务器上获得以下异常.我对如何解决这个问题绝对没有任何线索.
java.lang.NullPointerException
at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:205)
at com.sampleapp.arch.struts.InitializingRequestProcessor.getProcessorForModule(InitializingRequestProcessor.java:135)
at com.sampleapp.arch.struts.InitializingRequestProcessor.initializeFormBean(InitializingRequestProcessor.java:29)
at com.sampleapp.arch.struts.ResettingDynaValidatorForm.reset(ResettingDynaValidatorForm.java:46)
at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:484)
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:457)
at org.apache.strutsel.taglib.html.ELFormTag.doStartTag(ELFormTag.java:267)
at jsp_servlet._util.__settingsdisplay_f._jspService(__settingsdisplay_f.java:355)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
Run Code Online (Sandbox Code Playgroud)
下面给出了InitializingRequestProcessor的代码片段,并在return语句中抛出NullPointerException.
请询问您是否还需要其他信息.提前致谢.
private static RequestProcessor getProcessorForModule(ActionServlet servlet, ModuleConfig config) {
String key = Globals.REQUEST_PROCESSOR_KEY + config.getPrefix();
return (RequestProcessor) servlet.getServletContext().getAttribute(key);
}
Run Code Online (Sandbox Code Playgroud)
更新
根据Alex的响应,事实证明ResettingDynaValidatorForm(DynaValidatorForm的自定义实现)从Struts的ActionForm类获取超级ActionServlet,返回NULL值.
有没有理由说服务器只在运行几天后才开始为ActionServlet返回NULL值?
这看起来很像Struts中的一个bug.这种NPE通常ServletConfig不存在,这意味着所讨论的servlet没有init(ServletConfig config)正确地覆盖该方法.根据链接的javadoc,实现者必须super.init(config)在那里显式调用.如果你不这样做,你会得到这种NPE.
尝试升级Struts.
| 归档时间: |
|
| 查看次数: |
5875 次 |
| 最近记录: |