6 Replies Latest reply on Nov 6, 2005 3:10 AM by Amin Abbaspour

    Howto inject EJBs into POJO componets?

    Amin Abbaspour Newbie

      Hi,

      I'm using a layerd architecture and have POJO componets as action listeners and EJBs for logic. They look like this :

      @Name("listAgents")
      @Interceptor(SeamInterceptor.class)
      @Scope(value = CONVERSATION)
      @Conversational(ifNotBegunOutcome = "main")
      @Intercept(value = InterceptionType.ALWAYS)
      public class ListAgentsAction {
       private static final Logger log = Logger.getLogger(ListAgentsAction.class);
       ...
      

      And
      @Name("agentFacadeBean")
      @Stateless
      @Interceptor(SeamInterceptor.class)
      @Intercept(InterceptionType.ALWAYS)
      public class AgentFacadeBean implements AgentFacade {
      ...
      


      Both of them, are viewed as "Seam Componets" but when I wana inject EJBs inside my POJOs, it fails throwing this exception:
      java.lang.IllegalArgumentException: could not inject: agentFacadeBean to: listAgents
       at org.jboss.seam.Component.setFieldValue(Unknown Source)
       at org.jboss.seam.Component.injectFields(Unknown Source)
       at org.jboss.seam.Component.inject(Unknown Source)
       at org.jboss.seam.interceptors.BijectionInterceptor.bijectTargetComponent(Unknown Source)
       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(Unknown Source)
       at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Unknown Source)
       at org.jboss.seam.interceptors.SeamInvocationContext.proceed(Unknown Source)
       at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(Unknown Source)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       ...
      


      I tried to inject my EJB inside POJO action component with below code:
       @In(required = true, create = true)
       private AgentFacadeBean agentFacadeBean;
      


      I also tried to inject via @EJB annotation but then, I get a null object.

      Thanks for your help.