Diferencia entre revisiones de «Compartir contexto de Spring entre aplicaciones web»

De Dos Ideas.
Saltar a: navegación, buscar
(Archivo web.xml de los WARs)
(Archivo beanRefContext.xml de la librería incluida en los WARs)
 
Línea 19: Línea 19:
 
=== Archivo beanRefContext.xml de la librería incluida en los WARs ===
 
=== Archivo beanRefContext.xml de la librería incluida en los WARs ===
  
<code>
+
<code language=xml>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<beans xmlns="http://www.springframework.org/schema/beans"
 
<beans xmlns="http://www.springframework.org/schema/beans"

Revisión actual del 15:43 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>