Diferencia entre revisiones de «Compartir contexto de Spring entre aplicaciones web»
(→Archivo web.xml de los WARs) |
|||
Línea 10: | Línea 10: | ||
=== Archivo web.xml de los WARs === | === Archivo web.xml de los WARs === | ||
− | <code> | + | <code language=xml> |
<context-param> | <context-param> | ||
<param-name>parentContextKey</param-name> | <param-name>parentContextKey</param-name> | ||
Línea 16: | Línea 16: | ||
</context-param> | </context-param> | ||
</code> | </code> | ||
− | + | ||
=== Archivo beanRefContext.xml de la librería incluida en los WARs === | === Archivo beanRefContext.xml de la librería incluida en los WARs === | ||
Revisión del 15:42 24 ene 2011
Mediante el “parentContextKey” Spring nos permite compartir el contexto entre WARs contenidos en un EAR.
El uso del parámetro "parentContextKey" le indica al ContextLoader que utilice otra clase "ContextSingletonBeanFactoryLocator" para buscar un bean con el nombre que se especifica en valor del "parentContextKey", el bean debe estar definido en el archivo de configuración cuyo nombre tiene que cumplir con determinado patrón, por defecto el patrón es 'classpath*:beanRefContext.xml'.
EL bean debe ser un ApplicationContext en si mismo, este contexto se convertirá en el contexto de las aplicaciones web. En el caso de que exista el contexto se utilizara el existente y el nuevo no se creara. (Por esto el nombre ContextSingletonBeanFactoryLocator)
Para armar una aplicación de este tipo hay que crear un jar que contenga los servicios a compartir y la declaración de un bean del ApplicationContext en el archivo "beanRefContext.xml", por ultimo hay que incluir el jar en los WARs para dejarlo disponible en el classpath.
Archivo web.xml de los WARs
<context-param> <param-name>parentContextKey</param-name> <param-value>ear.context</param-value> </context-param>
Archivo beanRefContext.xml de la librería incluida en los WARs
<?xml version="1.0" encoding="UTF-8"?>
<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-2.0.xsd">
<!—Este bean es el contexto que compartirán los WARs. En el archivo
contexto-compartido.xml se tienen que definir todos los beans que se deseen compartir. --> <bean id="ear.context" class="org.springframework.context.support.ClassPathXmlApplicationContext"> <constructor-arg> <list> <value>contexto-compartido.xml</value> </list> </constructor-arg> </bean>
</beans>