- 论坛徽章:
- 0
|
有这么一个Struts工程,myeclipse开发,部署到Tomcat,一切正常
然而把它部署到weblogic(版本为8.1),运行后却抛出:
- 2006/04/11 18:17:42 org.apache.struts.util.RequestUtils createActionForm
- SEVERE: Error creating form bean of class com.esprit.struts.form.LoginForm
- java.lang.NullPointerException
- at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:212)
- at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:292)
- at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:191)
- at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:477)
- at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:457)
- at jsp_servlet._pages.__login._jspService(__login.java:278)
- at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
- at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
- at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
- at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
- at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322)
- at weblogic.servlet.jsp.PageContextImpl.forward(PageContextImpl.java:150)
- at org.apache.struts.taglib.logic.ForwardTag.doForward(ForwardTag.java:121)
- at org.apache.struts.taglib.logic.ForwardTag.doEndTag(ForwardTag.java:105)
- at jsp_servlet.__index._jspService(__index.java:148)
- at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
- at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
- at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
- at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
- at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
- at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
- at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
- at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
- at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
- at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
- at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
复制代码
跟踪调试发现Tomcat下,FormBeanConfig里的formBeanClass()得到了实例,而weblogic下,FormBeanConfig里的formBeanClass()没得到实例
把FormBeanConfig中的createActionForm()函数和formBeanClass()函数也贴出来:
- public ActionForm createActionForm(ActionServlet servlet)
- throws IllegalAccessException, InstantiationException {
- Object obj = null;
- // Create a new form bean instance
- if (getDynamic()) {
- obj = getDynaActionFormClass().newInstance();
- } else {
- obj = formBeanClass().newInstance();
- }
- ActionForm form = null;
- if (obj instanceof ActionForm) {
- form = (ActionForm)obj;
- } else {
- form = new BeanValidatorForm(obj);
- }
- form.setServlet(servlet);
- if (form instanceof DynaBean &&
- ((DynaBean)form).getDynaClass() instanceof MutableDynaClass) {
- DynaBean dynaBean = (DynaBean)form;
- MutableDynaClass dynaClass = (MutableDynaClass)dynaBean.getDynaClass();
- // Add properties
- dynaClass.setRestricted(false);
- FormPropertyConfig props[] = findFormPropertyConfigs();
- for (int i = 0; i < props.length; i++) {
- dynaClass.add(props[i].getName(), props[i].getTypeClass());
- dynaBean.set(props[i].getName(), props[i].initial());
- }
- dynaClass.setRestricted(isRestricted());
- }
- return form;
- }
复制代码
- protected Class formBeanClass() {
- ClassLoader classLoader =
- Thread.currentThread().getContextClassLoader();
- if (classLoader == null) {
- classLoader = this.getClass().getClassLoader();
- }
- try {
- return (classLoader.loadClass(getType())); //问题出在这,Tomcat下这个返回正常,而weblogic下却进了catch!
- } catch (Exception e) {
- return (null);
- }
- }
复制代码
请各位帮忙分析下,这是什么原因所致? |
|