Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Взаимодействие между двумя EJB-модулями внутри одного приложения

Anna | 4.06.2014 | нет комментариев
Привет, Програлюди!

При попытке получить EJB из иного модуля появляется NullPointerException.
Приведу пример, Дабы было внятнее.

Всеобщая конструкция приложения такая:

EAR
|
— core.jar (EJB-модуль с основными бинами) — ядро приложения
|
— app.jar (иной EJB-модуль с бинами) — бизнес-логика
|
— web.war (сервлеты)

В code.jar объявлен такой EJB:

@LocalBean
@Singleton
@Startup
public class AppInfo(){
   private int counter;

   public void incCounter(){
     counter  ;
  }
  public int getCounterValue(){
    return counter;
  }

}

В модуле app.jar есть Stateless бин тот, что пытается читать значение counter’a.

@Stateless
public class SomeBean{
   @EJB private AppInfo appinfo;

    public void run(){
       int counter = appInfo.getCounterValue(); // тут способ падает с NPE 
       System.out.println("Counter value is: " counter);
   }   
}

В модуле web.war есть сервлет тот, что, тот, что при всяком запросе увеличивает счетчик:

   public class MyServlet extends HttpServlet{
        @EJB private AppInfo appInfo;
        protected void doPost(params){
              appInfo.incCounter();
              ...
              other code
       }
  }

При дебаге видно:
В сервлете все работает: при входе в doPost() значение appInfo — это Proxy объект для AppInfo EJB.
В SomeBean появляется NPE: при входе в run() значение appInfo — null.

Как верно инжектировать EJB из модуля Core в EJB из модуля App?

P.S. Деплоится EAR’ник на JBoss 6.1 EAP
P.S.S. Через Remote интерфейс пробовал: не работает (appInfo — null NPE в способе)

Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB