Когда я пытаюсь получить доступ к EJB из другого модуля внутри одного приложения, я получил исключение NullPointerException.Ввод из одного модуля EJB в другой
Я объясню пример, если быть более точным.
EAR Структура следующее:
EAR
|
— core.jar (EJB-module with core EJB) — application core
|
— app.jar (another EJB-module with EJBs) — business logic here
|
— web.war (servlets)
В code.jar есть EJB:
@LocalBean
@Singleton
@Startup
public class AppInfo(){
private int counter;
public void incCounter(){
counter++;
}
public int getCounterValue(){
return counter;
}
}
В модуле app.jar мы имеем Stateless EJB, который пытается читать счетчик.
@Stateless
public class SomeBean{
@EJB private AppInfo appinfo;
public void run(){
int counter = appInfo.getCounterValue(); // here method throws with 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: at run() значение точки входа appInfo = null.
Как правильно ввести EJB из core.jar в другой EJB из приложения?
P.S. Я развертываю EAR для JBoss 6.1 EAP P.S.S. Я также попытался с помощью @Remote: не работает (AppInfo по-прежнему равна нулю)
Ну, я говорю еще раз: я также пытался использовать @Remote: не работает (appInfo по-прежнему равен нулю) – kyberorg