EJB в компонент SEAM (разные проекты и один и тот же JBoss) - PullRequest
3 голосов
/ 21 октября 2009

У меня есть следующие настройки:

JBoss 4.2.3
под этим у меня есть:

 
--> Project A  (Wich is not SEAM 2.1.2GA based)
    EJBs:
       * beanA (JNDI = beanA/remote)
       * beanB (JNDI = beanB/remote)

--> Project B  (SEAM based)
    EJBs / Components:
       * ComponentX
       * ComponentY

Для компонента X у меня есть текущий фрагмент кода:

@Scope(ScopeType.CONVERSATION)
@Name("ComponentX")
public class ComponentX implements java.io.Serializable { 
...
@EJB
beanAInterface beanA;
....
public foo(){
    beanA.bar();  // <--------- beanA is null, even with mapped name and etc, only works
                  //            if i direct lookup with Context().lookup("beanA/remote")
}

Есть идеи, как это решить?

Заранее спасибо.

}

1 Ответ

2 голосов
/ 24 октября 2009

Ваш класс ComponentX не является EJB, поэтому вы не можете использовать аннотацию @EJB для их внедрения. У вас есть несколько вариантов. Преобразуйте ваш ComponentX в EJB, добавив @Stateless или @Statefull и интерфейс @Local или @Remote, таким образом AS заметит, что ComponentX является EJB-компонентом, и будет знать, что делать с желаемой инъекцией. Другой вариант - позволить ComponentX просто компоненту и использовать поиск InitialContext # для получения ссылки на «beanA / remote» вручную.

...