Estoy intentando inyectar Spring beans en un EJB usando @Interceptors(SpringBeanAutowiringInterceptor.class)
pero no puedo hacerlo funcionar con los ejemplos beanRefContext.xml
que he visto.Inyectar beans de primavera en EJB3
Aquí es mi EJB:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class AlertNotificationMethodServiceImpl implements
AlertNotificationMethodService {
@Autowired
private SomeBean bean;
}
que he proporcionado un beanRefContext.xml de la siguiente manera:
<?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>
embargo, parece ser la recreación de los granos en lugar de obtener el Application Context existente. Termino con la siguiente excepción porque uno de mis beans es ServletContextAware.
java.lang.IllegalArgumentException: Cannot resolve ServletContextResource
without ServletContext
Cuando se utiliza el SpringBeanAutowiringInterceptor
, ¿no debería obtener el Application Context en lugar de crear una nueva?
También traté de cambiar mi web.xml para que el contextConfigLocation apunte al beanRefContext.xml, con la esperanza de que cargue mi configuración Spring pero termino con la misma excepción que la anterior.
¿Alguien sabe cómo hacer esto correctamente? Los ejemplos que he visto parecen usar el mismo método que estoy usando, y supongo que significa que los beans se vuelven a crear cuando se invoca el interceptor (o es así como se supone que debe funcionar y no he entendido bien).
Un útil enlace que explica todo el proceso: http://techo-ecco.com/blog/spring-application-context-hierarchy-and-contextsingletonbeanfactorylocator/ – omartin