1 Reply Latest reply on May 7, 2007 4:23 PM by pmuir

    Outjection and component instantiation question

    zzzz8

      I think I may have a misconception of some of the intricacies of outjection and Seam component instantiation. I have a Seam component that is created by Seam via the @In(create=true) annotation. Unfortunately, I cannot seem to inject another Seam component into this component. Here's what I'm doing:

      Seam component 1

      @Name("comp1")
      @Stateful
      public class MySample1Bean implements MySample1 {
      ...
      
      @Out
      Connection connection = null;
      ...
      public void myMethod() {
      ...
      connection = ...;
      ...
      }
      }


      Seam component 2
      @Name("comp2")
      @Stateful
      public class MySample2Bean implements MySample2 {
      ...
      
      @In(create=true) // I've also tried @In(create=true, required=false)
      MySample3 comp3 = null;
      
      @In
      Connection connection = null;
      ...
      
      }


      Seam component 3
      @Name("comp3")
      @Stateful
      public class MySample3Bean implements MySample3 {
      ...
      
      @In // I've put @In(required=false) here, too just so component gets created
      Connection connection = null;
      
      ...
      
      }


      I have a page where comp1 is called. The user then invokes an action method which then navigates the user to another page, where comp2 is accessed. BTW, I have it on my pages.xml file that a long running conversation gets started (i.e. using <begin-conversation> when the page is invoked) for the page that calls comp2. The Seam component comp3 gets created in comp2 because of the @In(create=true) annotation. However, when comp3 is created, I'm expecting the connection context variable to be outjected to comp3. Unfortunately, connection is always null in comp3. Interestingly, connection is non-null in comp2. What's going on here and what am I doing wrong?