Внедрить bean-компоненты Spring в EJB3

Я пытаюсь внедрить компоненты 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 (или это то, как он должен работать, и я неправильно понял).

9
задан ravun 9 March 2011 в 09:54
поделиться