论坛首页 Java企业应用论坛

Struts怪异问题

浏览 4943 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-04-11  
有这么一个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()返回NULL
把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,getType();得到的就是com.esprit.struts.form.LoginForm,貌似loadClass();这个函数没找到这个class,但是在WEB-INF/classes下有存在这个class的。
        } catch (Exception e); {
            return (null);;
        }

    }

请各位大大帮忙分析下,小弟刚用weblogic,这是什么原因所致?
   发表时间:2006-04-25  
esprit 写道
有这么一个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()返回NULL
把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,getType();得到的就是com.esprit.struts.form.LoginForm,貌似loadClass();这个函数没找到这个class,但是在WEB-INF/classes下有存在这个class的。
        } catch (Exception e); {
            return (null);;
        }

    }

请各位大大帮忙分析下,小弟刚用weblogic,这是什么原因所致?


看看weblogic下是否有其他struts.jar特别是server目录中
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics