Как получить SessionContext в JBOSS

Я попробовал несколько путей в бобе сессии, как:

@Resource
private SessionContext ctx;

ИЛИ

private SessionContext ctx;

@Resource
private void setSessionContext(SessionContext ctx) {
  this.sctx = ctx;
}

ИЛИ

InitialContext ic = new InitialContext();
SessionContext ctx = (SessionContext) ic.lookup("java:comp/env/sessionContext");

Ни один из них не работал, differnet исключения произошел в JBOSS.

Я действительно рассердился об этом. Любой мог сказать мне что случилось. Большое спасибо!

10
задан Pascal Thivent 21 December 2009 в 06:35
поделиться

1 ответ

Первые два решения (инъекция поля и инъекция метода сеттера) выглядят хорошо и должны работать .

У меня есть сомнения по поводу третьего (поисковый подход), так как вы не показали соответствующую @Resource(name="sessionContext") аннотацию, но она тоже должна работать , если ее правильно использовать. Четвертым вариантом будет поиск стандартного имени java:comp/EJBContext

@Stateless
public class HelloBean implements com.foo.ejb.HelloRemote {
  public void hello() {
    try {
      InitialContext ic = new InitialContext();
      SessionContext sctxLookup = 
          (SessionContext) ic.lookup("java:comp/EJBContext");
      System.out.println("look up EJBContext by standard name: " + sctxLookup);
    } catch (NamingException ex) {
      throw new IllegalStateException(ex);
    }
  }
}

Эти четыре подхода совместимы со стандартом EJB 3 и должны определенно работать с любым сервером приложений Java EE 5, как напоминается в 4 Способах получения EJBContext в EJB 3. Пожалуйста, предоставьте полную трассировку стека исключения, которое вы получите, если они этого не сделают.

.
14
ответ дан 3 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: