问题描述
|
我在将Seam组件注入注解为@Stateful bean到另一个注解相同的问题时遇到了问题。所以我有组件:
@状态
@Name(\“ userFncModalAction \”)
@Scope(ScopeType.SESSION)
公共类UserFncModalAction扩展... {
@在
私人UserPanelListActionLocal userPanelListAction;
}
注入的几乎是相同的(注释为@Name,@Stateful)。我的问题是页面尝试加载并执行注入后。异常上升> javax.naming.NameNotFoundException:没有对象绑定到名称java:comp / env / TutorialWeb-ear / UserPanelListAction。
我不知道哪里有问题。我同时使用两个ejb ref定义
1. web.xml = Web模块注入的ejb参考
2. ejb-jar.xml =支持将ejb注入另一个Seam组件
有我的项目配置:
web.xml ejb引用
<ejb-local-ref>
<ejb-ref-name>TutorialWeb-ear/UserPanelListAction</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home/>
<local>cz.cca.web.action.user.UserPanelListActionLocal</local>
</ejb-local-ref>
</pre>
<ejb-local-ref>
<ejb-ref-name>TutorialWeb-ear/UserFncModalAction</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home/>
<local>cz.cca.web.action.user.UserFncModalActionLocal</local>
</ejb-local-ref>
components.xml
<core:init debug=\"false\" jndi-pattern=\"java:comp/env/TutorialWeb-ear/#{ejbName}\"/>
ejb-jar.xml
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"
version=\"3.0\">
<enterprise-beans>
<session>
<ejb-name>UserPanelListActionLocal</ejb-name>
<ejb-local-ref>
<ejb-ref-name>TutorialWeb-ear/UserPanelListAction</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home/>
<local>cz.cca.web.action.user.UserPanelListActionLocal</local>
</ejb-local-ref>
</session>
<session>
<ejb-name>UserFncModalActionLocal</ejb-name>
<ejb-local-ref>
<ejb-ref-name>TutorialWeb-ear/UserFncModalAction</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home/>
<local>cz.cca.web.action.user.UserFncModalActionLocal</local>
</ejb-local-ref>
</session>
</enterprise-beans>
<interceptors>
<interceptor>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor>
</interceptors>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor-binding>
</assembly-descriptor>
</ejb-jar>
当我简单地使用注释@In时,将导致:
INFO: EJB5018: An exception was thrown during an ejb invocation on [UserFncModalAction]
INFO: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception is: org.jboss.seam.requiredException: @In attribute requires non-null value: userFncModalAction.userPanelListAction
org.jboss.seam.requiredException: @In attribute requires non-null value: userFncModalAction.userPanelListAction
at org.jboss.seam.Component.getValuetoInject(Component.java:2361)
at org.jboss.seam.Component.injectAttributes(Component.java:1739)
at org.jboss.seam.Component.inject(Component.java:1557)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.persistence.EntityManagerProxyInterceptor.aroundInvoke(EntityManagerProxyInterceptor.java:29)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.persistence.HibernateSessionProxyInterceptor.aroundInvoke(HibernateSessionProxyInterceptor.java:30)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
...
...
...at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
当我在表达式中使用注释时-这意味着:
@In(\"#{userPanelListAction}\")
private UserPanelListActionLocal userPanelListAction;
之后它抛出:
INFO: EJB5018: An exception was thrown during an ejb invocation on [UserFncModalAction]
INFO: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception is: org.jboss.seam.InstantiationException: Could not instantiate Seam component: userPanelListAction
org.jboss.seam.InstantiationException: Could not instantiate Seam component: userPanelListAction
at org.jboss.seam.Component.newInstance(Component.java:2170)
at org.jboss.seam.Component.getInstance(Component.java:2024)
at org.jboss.seam.Component.getInstance(Component.java:1986)
at org.jboss.seam.Component.getInstance(Component.java:1980)
at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:148)
at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:51)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
at ...
...
...
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: javax.naming.NameNotFoundException: No object bound to name java:comp/env/TutorialWeb-ear/UserPanelListAction
at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:834)
at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:173)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:396)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.jboss.seam.Component.instantiateSessionBean(Component.java:1403)
at org.jboss.seam.Component.instantiate(Component.java:1367)
at org.jboss.seam.Component.newInstance(Component.java:2148)
... 192 more
最后我解决了这个问题!!! -需要注释属性,所以我写了
@In(create=true,required=false)
private UserPanelListActionLocal userPanelListAction;
一切都很好。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)