我試圖使用@Interceptors(SpringBeanAutowiringInterceptor.class)
將Spring bean注入到EJB中,但我無法使用我見過的beanRefContext.xml
示例。向EJB3注入Spring bean
這裏是我的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>
但是,它似乎是重新創建豆,而不是獲取現有的ApplicationContext。我最終得到下面的異常,因爲我的一個bean是ServletContextAware。
java.lang.IllegalArgumentException: Cannot resolve ServletContextResource
without ServletContext
當使用SpringBeanAutowiringInterceptor
,它不應該獲得的ApplicationContext,而不是創建一個新的?
我也嘗試更改我的web.xml,所以contextConfigLocation指向beanRefContext.xml,希望它會加載我的Spring配置,但最終得到與上面相同的異常。
有誰知道如何正確地做到這一點?我見過的例子似乎使用了我使用的相同的方法,我假設這意味着在調用Interceptor時(或者它應該如何工作並且我誤解了它),bean會被重新創建。
一個有用的鏈接解釋的全過程:http://techo-ecco.com/blog/spring-application-context-hierarchy-and-contextsingletonbeanfactorylocator/ – omartin 2013-02-06 08:42:30