Я не могу получить объект SessionContext на EJB.Я перепробовал все варианты, предложенные для 4 способов получить EJBContext в EJB 3 , и ни один из них не сработал.Например, следующий код в моем проекте ...
@Stateful
public class SecurityService {
@Resource
private SessionContext context;
@PostConstruct
public void init() {
}
}
... генерирует следующее исключение во время развертывания:
[#|2012-02-28T14:35:02.805-0300|SEVERE|glassfish3.1.1|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=18;_ThreadName=admin-thread-pool-4848(5);|The log message is null.
java.lang.NullPointerException
at com.sun.appserv.connectors.internal.api.AppSpecificConnectorClassLoaderUtil.detectResourceInRA(AppSpecificConnectorClassLoaderUtil.java:266)
at com.sun.appserv.connectors.internal.api.AppSpecificConnectorClassLoaderUtil.processDescriptorForRAReferences(AppSpecificConnectorClassLoaderUtil.java:211)
at com.sun.appserv.connectors.internal.api.AppSpecificConnectorClassLoaderUtil.processDescriptorForRAReferences(AppSpecificConnectorClassLoaderUtil.java:130)
at com.sun.appserv.connectors.internal.api.AppSpecificConnectorClassLoaderUtil.detectReferredRARs(AppSpecificConnectorClassLoaderUtil.java:118)
at com.sun.appserv.connectors.internal.api.ConnectorClassLoaderServiceImpl.getConnectorClassLoader(ConnectorClassLoaderServiceImpl.java:111)
at com.sun.enterprise.v3.server.ClassLoaderHierarchyImpl.getConnectorClassLoader(ClassLoaderHierarchyImpl.java:117)
Если я удаляю аннотацию @Resource, которую он развертывает,но не работает (я пробовал с JNDI и другими методами, упомянутыми ранее).
Я использую Glassfish 3.1.1, и мой проект - JSF с CDI и EJB локально для сервисов с JPA.Я пытался внедрить SessionContext на бобах CDI, но получил те же ошибки.Мой EJB настроен с аннотациями, а мой beans.xml не имеет конфигураций (но существует).
Одна странная вещь заключается в том, что с помощью поиска JNDI мне удалось получить объект типа SessionContextImpl по пути java: /comp / EJBContext для метода @PostConstruct init ().НО, он обнуляется, как только вызывается другой метод EJB (?), И он не содержит данных о ролях пользователя (вызов isCallerInRole () вызывает исключение).Кроме того, это не объект EJBContext.
Я упаковываю все в WAR, используя Maven, и зависимость Java EE помечена как предоставленная, как показано ниже:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
Мне кажется, что контейнер не предоставляет SessionContext (EJBCOntext) вообще.Я даже не знаю, возможно ли это, и понятия не имею, как это решить.
Пожалуйста, если у вас есть ЛЮБОЕ представление об этом, я буду рад это услышать.Спасибо.