Hi,
I have a case where several Seam components implement the same interface. Another loosely coupled Seam component gets injected likeso.
@Name("foo")
public class Foo implements ICommonInterface {
 
  @In(required=false)
  @Out(required=false)
  private AnotherBijectedField anotherField;
  @Out
  private ICommonInterface commonInterface = this;
}
@Name("bar")
public class Bar implements ICommonInterface {
  @In(required=false)
  @Out(required=false)
  private SomeBijectedField field;
  @Out
  private ICommonInterface commonInterface = this;
}
@Name("looselyCoupledBean")
public class LooselyCoupledBean {
  @In
  private ICommonInterface commonInterface;
}
The problem I see is that injected commonInterface object is not properly initialized (bijected fields are not set) because it seems I have access to the variable outjected in the context which doesn't benefit of any Seam interception goodness.
Is there an alternative in using
@Out private B b = this;
@Name("factoryManager")
public class CommonInterfaceFactory {
   @In
   private String commonInterfaceBeanName;
   @Factory("commonInterface")
   public ICommonInterface create() {
          return Component.getInstance(commonInterfaceBeanName);
   }
}
Then in Foo and Bar beans I need to outject commonInterfaceBeanName by reading the @Name value attribute... That works by the way.
I'd be interested to hear what others have done to tackle this issue. 
Thanks,
-Guillaume