Я пытаюсь запустить некоторые юнит-тесты, используя встроенную версию Glassfi sh. Большинство моих тестов в порядке, но я не могу заставить работать мой компонент @SessionScoped. Я делаю следующую настройку:
ejbContainer = EJBContainer.createEJBContainer(properties);
System.out.println("Opening the container" );
ctx = ejbContainer.getContext();
И это тест:
RequestBean requestBean = (RequestBean) ctx.lookup("java:global/classes/RequestBean");
assertNotNull(requestBean);
OrderMonitorBean monitorBean = (OrderMonitorBean) ctx.lookup("java:global/classes/OrderMonitorBean");
assertNotNull(monitorBean);
LoginRequest loginRequest = (LoginRequest) ctx.lookup("java:global/classes/LoginRequest");
assertNotNull(loginRequest);
OrderBookManager obm = (OrderBookManager) ctx.lookup("java:global/classes/OrderBookManager");
assertNotNull(obm);
Однако, хотя все компоненты находятся в одном месте, OrderBookManager не найден, я получаю следующая ошибка:
javax.naming.NamingException: Lookup failed for 'java:global/classes/OrderBookManager' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
Фактический тест не удался по другой причине:
Caused by: org.jboss.weld.contexts.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.SessionScoped
Вот почему я сейчас проверяю, что компонент SessionScoped существует в контексте, так как мне было интересно, эти проблемы были связаны.
Так что мой путь к бину SessionScoped неправильный? Я не уверен, что это должно быть или почему это терпит неудачу.
Спасибо.