Я пытаюсь внедрить компоненты Spring в EJB, используя @Interceptors (SpringBeanAutowiringInterceptor.class)
, но я не могу заставить его работать с beanRefContext.xml
примеров, которые я видел.
Вот мой EJB:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class AlertNotificationMethodServiceImpl implements
AlertNotificationMethodService {
@Autowired
private SomeBean bean;
}
Я предоставил beanRefContext.xml следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="...">
<!-- Have also tried with ClassPathXmlApplicationContext -->
<bean id="context"
class="org.springframework.web.context.support.XmlWebApplicationContext">
<property name="configLocations" value="/config/app-config.xml" />
</bean>
</beans>
Но, похоже, он воссоздает bean-компоненты вместо получения существующего ApplicationContext. Я получаю следующее исключение, потому что один из моих bean-компонентов - ServletContextAware.
java.lang.IllegalArgumentException: Cannot resolve ServletContextResource
without ServletContext
При использовании SpringBeanAutowiringInterceptor
не должен ли он получить ApplicationContext вместо создания нового?
Я также попытался изменить свой web.xml, чтобы contextConfigLocation указывал на beanRefContext.xml, надеясь он загрузит мою конфигурацию Spring, но я получу то же исключение, что и выше.
Кто-нибудь знает, как это сделать правильно? В примерах, которые я видел, похоже, используется тот же метод, что и я, который, как я полагаю, означает, что bean-компоненты воссоздаются при вызове Interceptor (или это то, как он должен работать, и я неправильно понял).