JBoss7.1.1上的Struts2应用程序间歇性地出现CreationException

JBoss7.1.1上的Struts2应用程序间歇性地出现CreationException,struts2,jboss7.x,cdi,Struts2,Jboss7.x,Cdi,我有一个用Struts2开发的应用程序,它部署在JBoss 7.1.1上。我们使用CDI注入依赖项 我在Struts.xml中包含了以下内容: 还包括cdi-api-1.0-SP1.jar和struts2-cdi-plugin-2.3.4.1.jar jar以及应用程序所需的其他jar 我偶尔会遇到以下异常,我的服务器需要重新启动才能解决此问题 Unable to instantiate Action, com.action.SearchAction, defined for 'searchA

我有一个用Struts2开发的应用程序,它部署在JBoss 7.1.1上。我们使用CDI注入依赖项

我在Struts.xml中包含了以下内容:

还包括cdi-api-1.0-SP1.jar和struts2-cdi-plugin-2.3.4.1.jar jar以及应用程序所需的其他jar

我偶尔会遇到以下异常,我的服务器需要重新启动才能解决此问题

Unable to instantiate Action, com.action.SearchAction,  defined for 'searchAction' in namespace '/'null
        com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:316)
        com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:397)
        com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)
        org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)


    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
        com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
        org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
root cause
javax.enterprise.inject.CreationException
        sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        java.lang.Class.newInstance0(Class.java:355)
        java.lang.Class.newInstance(Class.java:308)
        org.jboss.weld.util.reflection.SecureReflections$16.work(SecureReflections.java:343)
        org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)
        org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:173)
        org.jboss.weld.util.reflection.SecureReflections.newInstance(SecureReflections.java:340)
        org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:33)
        org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:45)
        org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:85)
        org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:125)
        org.jboss.weld.bean.ManagedBean.createInstance(ManagedBean.java:333)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.produce(ManagedBean.java:200)
        org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:289)
        org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:61)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:616)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:681)
        org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:118)
        org.jboss.weld.util.Beans.injectBoundFields(Beans.java:703)
        org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:712)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1$1.proceed(ManagedBean.java:161)
        org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1.work(ManagedBean.java:157)
        org.jboss.weld.bean.ManagedBean$FixInjectionPoint.run(ManagedBean.java:131)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.inject(ManagedBean.java:153)
        org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:290)
        org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:61)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:616)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:681)
        org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:118)
        org.jboss.weld.util.Beans.injectBoundFields(Beans.java:703)
        org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:712)
        org.jboss.weld.manager.SimpleInjectionTarget$1.proceed(SimpleInjectionTarget.java:106)
        org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48)
        org.jboss.weld.manager.SimpleInjectionTarget.inject(SimpleInjectionTarget.java:102)
        org.apache.struts2.cdi.CdiObjectFactory.buildBean(CdiObjectFactory.java:163)
        com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:151)
        com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:121)
        com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:297)
        com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:397)
        com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)
        org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
        org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
        com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
        org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)

请告诉我如何解决此问题。

问题是您在WAR文件中包含了app server提供的JAR。不包括CDI的API JAR,等等。

你能在问题中列出你的WEB-INF/lib的所有内容吗?cdi-api-1.0-SP1.jar antlr-2.7.jar commons-beanutils-1.8.0.jar commons-digester-2.0.jar commons-fileupload-1.3.jar commons-collections-3.1.jar commons-io-2.1.jar commons-lang-2.5.jar commons-lang3.1.jar freemaker-2.3.19.javassist-3.15.0-GA.jarjavax.annotation.jar javax.inject.jar jboss-as-naming-7.1.1.Final.jar jboss-interceptor-api-3.1.0-CR3.jar jboss-msc-1.0.2.GA.jar jboss-transaction-api_1.1_spec-1.0.0.Final.jar jbossjts-integration-4.15.3.Final.jar-ognl-3.0.6.jar jboss-client.jar-servlet-api-2.5.jar-struts2-cdi-plugin-2.2.3.15.jar-core请让我知道,为了避免此类异常,我们不应该在JBoss7.1.1上运行的应用程序中使用的所有JAR。应用程序服务器提供的任何API JAR都应该按照提供的那样列在您的maven项目中,这样它就不会包含在您的WEB-INF/lib中。
Unable to instantiate Action, com.action.SearchAction,  defined for 'searchAction' in namespace '/'null
        com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:316)
        com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:397)
        com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)
        org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)


    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
        com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
        org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
root cause
javax.enterprise.inject.CreationException
        sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        java.lang.Class.newInstance0(Class.java:355)
        java.lang.Class.newInstance(Class.java:308)
        org.jboss.weld.util.reflection.SecureReflections$16.work(SecureReflections.java:343)
        org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)
        org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:173)
        org.jboss.weld.util.reflection.SecureReflections.newInstance(SecureReflections.java:340)
        org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:33)
        org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:45)
        org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:85)
        org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:125)
        org.jboss.weld.bean.ManagedBean.createInstance(ManagedBean.java:333)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.produce(ManagedBean.java:200)
        org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:289)
        org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:61)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:616)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:681)
        org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:118)
        org.jboss.weld.util.Beans.injectBoundFields(Beans.java:703)
        org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:712)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1$1.proceed(ManagedBean.java:161)
        org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1.work(ManagedBean.java:157)
        org.jboss.weld.bean.ManagedBean$FixInjectionPoint.run(ManagedBean.java:131)
        org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.inject(ManagedBean.java:153)
        org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:290)
        org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:61)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:616)
        org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:681)
        org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:118)
        org.jboss.weld.util.Beans.injectBoundFields(Beans.java:703)
        org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:712)
        org.jboss.weld.manager.SimpleInjectionTarget$1.proceed(SimpleInjectionTarget.java:106)
        org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48)
        org.jboss.weld.manager.SimpleInjectionTarget.inject(SimpleInjectionTarget.java:102)
        org.apache.struts2.cdi.CdiObjectFactory.buildBean(CdiObjectFactory.java:163)
        com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:151)
        com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:121)
        com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:297)
        com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:397)
        com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)
        org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
        org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
        com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
        org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)