Я пытаюсь получить доступ к компоненту Spring в EJB3, но, похоже, он не вводится, потому что я получаю исключение NullPointerException.
Думаю, я не понимаю роль beanRefContext.xml и то, как он используется очень хорошо.
Следующие EJB и XML находятся в сервисном JAR, который находится в WEB-INF / lib файла WAR. Компонент Spring (DAO) находится в отдельном JAR-файле также в WEB-INF / lib.
EJB:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class TimetrackingServiceBean implements TimetrackingService {
@Autowired
private UserDao userDao;
@Override
public List<User> getAllUsers() {
return this.userDao.findAll(); // <-- NPE
}
}
beanRefContext.xml:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean name="serviceContext" class="org.springframework.context.support.ClassPathXmlApplicationContext"></bean>
</beans>
services-context.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:annotation-config />
</beans>
ИЗМЕНИТЬ
Я прочитал сообщение «Внедрить компоненты Spring в EJB3» и теперь добавил контекст - param в web.xml, но проблема остается.
web.xml:
...
<context-param>
<param-name>parentContextKey</param-name>
<param-value>serviceContext</param-value>
</context-param>
...
Очевидно, мне нужна дополнительная помощь и объяснения.