My question is 'why doesn't this work?' - here is the background information...
First, I have a SLSB - userEditor: | @Stateless | @Name("userEditor") | public class UserEditorBean implements UserEditor { | | @Logger | private Log log; | | @PersistenceContext(unitName = "useridDatabase") | private EntityManager em; | | ... implementation details ... | | } | Second, I have a SFSB - userManager: | @Stateful | @Name("userManager") | public class UserManagerBean implements UserManager { | | @Logger | private Log log; | | @In | private UserEditor userEditor; | | @DataModel | private List<User> users; | | @DataModelSelection | @Out(required=false) | private User user; | | @Factory("users") | public void getUsers() { | if (users == null || users.isEmpty()) { | this.users = userEditor.getUsers(); | log.info("loaded users"); | } else { | log.info("users already loaded"); | } | } | | ... and so on ... | } | In components.xml, I have: | <component name="org.jboss.seam.core.init"> | <property name="debug">true</property> | <property name="myFacesLifecycleBug">false</property> | <!-- Uncomment the following property and customize as necessary if you're using EJB3 --> | <property name="jndiPattern">useridentity-app-1.0/#{ejbName}/local</property> | </component> | When I deploy my application .ear file, here is some (abbreviated) info from Seam: | 11:18:42,828 INFO [Component] Component: userManager, scope: CONVERSATION, type: STATEFUL_SESSION_BEAN, class: com.javaplant.identity.impl.UserManagerBean, JNDI: useri | dentity-app-1.0/UserManagerBean/local | ..... | 11:18:43,734 INFO [Component] Component: userEditor, scope: STATELESS, type: STATELESS_SESSION_BEAN, class: com.javaplant.identity.impl.UserEditorBean, JNDI: userident | ity-app-1.0/UserEditorBean/local | And from the JBoss JMX-CONSOLE, we have: | Global JNDI Namespace | | +- useridentity-app-1.0 (class: org.jnp.interfaces.NamingContext) | | +- Dispatcher (class: org.jnp.interfaces.NamingContext) | | | +- local (proxy: $Proxy211 implements interface org.jboss.seam.core.LocalDispatcher,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject) | | +- UserEditorBean (class: org.jnp.interfaces.NamingContext) | | | +- local (proxy: $Proxy225 implements interface com.javaplant.identity.UserEditor,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject) | | | +- remote (proxy: $Proxy224 implements interface com.javaplant.identity.UserEditor,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBObject) | | +- UserManagerBean (class: org.jnp.interfaces.NamingContext) | | | +- localStatefulProxyFactory (class: org.jboss.ejb3.stateful.StatefulLocalProxyFactory) | | | +- local (class: java.lang.Object) | | | +- remote (class: java.lang.Object) | | | +- remoteStatefulProxyFactory (proxy: $Proxy117 implements interface org.jboss.ejb3.ProxyFactory) | I have a Facelets component in which I reference the 'users' component which is produced by the factory method in my UserManager: | <ice:dataTable | var="user" | value="#{users}" | sortColumn="#{user.name}" | > | .... | </ice:dataTable> | However, this is not working - here is the stack trace: | 11:19:10,703 ERROR [D2DFaceletViewHandler] Problem in renderResponse: org.jboss.seam.RequiredException: In attribute requires value for component: userManager.userEdito | r | javax.ejb.EJBException: org.jboss.seam.RequiredException: In attribute requires value for component: userManager.userEditor | at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69) | at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83) | at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:83) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) | at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:203) | at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98) | at $Proxy229.getUsers(Unknown Source) | at com.javaplant.identity.UserManager$$FastClassByCGLIB$$5b980564.invoke(<generated>) | at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) | at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:45) | at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:73) | at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:55) | at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:39) | 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:585) | at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) | at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169) | at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64) | at org.jboss.seam.interceptors.ExceptionInterceptor.handleExceptions(ExceptionInterceptor.java:38) | 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:585) | at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) | at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169) | at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64) | at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144) | at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129) | at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102) | at org.jboss.seam.intercept.ClientSideInterceptor.interceptInvocation(ClientSideInterceptor.java:82) | at org.jboss.seam.intercept.ClientSideInterceptor.intercept(ClientSideInterceptor.java:51) | at com.javaplant.identity.UserManager$$EnhancerByCGLIB$$6ee2e423.getUsers(<generated>) | 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:585) | at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) | at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:102) | at org.jboss.seam.Component.callComponentMethod(Component.java:1791) | at org.jboss.seam.Component.getInstanceFromFactory(Component.java:1678) | at org.jboss.seam.Component.getInstance(Component.java:1615) | at org.jboss.seam.Component.getInstance(Component.java:1592) | at org.jboss.seam.jsf.SeamVariableResolver.resolveVariable(SeamVariableResolver.java:46) | at org.apache.myfaces.config.LastVariableResolverInChain.resolveVariable(LastVariableResolverInChain.java:42) | at com.sun.facelets.el.LegacyELContext$LegacyELResolver.getValue(LegacyELContext.java:134) | at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:65) | at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192) | at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) | at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56) | at javax.faces.component.UIData.getValue(UIData.java:1019) | at com.icesoft.faces.component.panelseries.UISeries.getDataModel(UISeries.java:304) | at com.icesoft.faces.component.panelseries.UISeries.processCurrentRowData(UISeries.java:132) | at com.icesoft.faces.component.panelseries.UISeries.setRowIndex(UISeries.java:124) | at javax.faces.component.html.HtmlDataTable.encodeBegin(HtmlDataTable.java:43) | at com.icesoft.faces.component.panelseries.UISeries.encodeBegin(UISeries.java:245) | at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:528) | at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535) | at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535) | at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535) | at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:273) | at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:149) | at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384) | at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:390) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at com.javaplant.filter.RequestDumper.doFilter(RequestDumper.java:76) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:32) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) | at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) | at com.javaplant.cas.catalina.CASSSOAuthenticatorValve.invoke(CASSSOAuthenticatorValve.java:372) | at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) | at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156) | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) | at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) | at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) | at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) | at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) | at java.lang.Thread.run(Thread.java:595) | Caused by: org.jboss.seam.RequiredException: In attribute requires value for component: userManager.userEditor | at org.jboss.seam.Component.getInstanceToInject(Component.java:1876) | at org.jboss.seam.Component.injectFields(Component.java:1342) | at org.jboss.seam.Component.inject(Component.java:1112) | at org.jboss.seam.interceptors.BijectionInterceptor.bijectTargetComponent(BijectionInterceptor.java:48) | 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:585) | at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) | at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169) | at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64) | at org.jboss.seam.interceptors.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:39) | 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:585) | at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) | at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169) | at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64) | at org.jboss.seam.interceptors.OutcomeInterceptor.interceptOutcome(OutcomeInterceptor.java:23) | 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:585) | at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) | at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169) | at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64) | at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(ConversationInterceptor.java:51) | 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:585) | at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) | at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169) | at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64) | at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144) | at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129) | at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102) | at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49) | 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:585) | at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118) | at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:57) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:46) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) | ... 107 more | So what am I missing here? I could swear I've successfully injected session beans into each other before with Seam - however, I noticed the documentation doesn't show an explicit example of this... is this not supported? Any help appreciated. Thanks, Brad Smith View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3998557#3998557 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3998557 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user