Ejemplo de CrossContext
19/07/2008Como comentaba mi compañero de Citilab Pau Gay en uno de sus ultimos post, “soy un desarrollador de software pero nunca hago entradas tecnológicas“. Aviso que este post no interesara a los no tecnólogos de este blog y quien avisa no es traidor.
Vamos al lío.. Hace unos días tuve la necesidad de compartir variables entre dos aplicaciones web situadas en el mismo servidor y descubrí el CrossContext que simplemente es un atributo de configuración de tomcat que sirve para que las diferentes aplicaciones web alojadas en el servidor compartan el contexto.
He creado un pequeño ejemplo para ver como se aplica este “método”:
Cómo ejecutar el ejemplo
- Se añaden las dos aplicaciones web CrossContextExample1.war y CrossContextExample2.war en el directorio webapps del tomcat (versión 5 o superior).
- Se modifica el fichero conf/server.xml del tomcat. Se añaden las siguientes líneas dentro del tag <Host>:<Context path=”/CrossContextExample1″ debug=”0″ reloadable=”true” crossContext=”true” /><Context path=”/CrossContextExample2″ debug=”0″ reloadable=”true” crossContext=”true” /> Nótese que estamos indicando al tomcat que los dos proyectos que van a compartir información sean “crossContext = true”.
- Finalmente encendemos el tomcat y ejecutamos las aplicaciones. Primero CrossContextExample1 (http://localhost:8080/CrossContextExample1/) que nos tiene que dar el siguiente resultado: “Servlet Context is Set tested”. Y después CrossContextExample2 (http://localhost:8080/CrossContextExample2/) que nos tiene que dar el siguiente resultado: “tested”.
Explicación del código
En index.html de CrossContextExample1 tenemos el siguiente código:
application.setAttribute(”test”,”tested”);
out.println(”Servlet Context is Set ” + (String)application.getAttribute(”test”));
Que esta inicializando el atributo “test” con el valor “tested.
En index.html de CrossContextExample2 tenemos el siguiente código:
ServletContext sc = pageContext.getServletContext().getContext(”/CrossContextExample1″);
out.println(sc.getAttribute(”test”));
Que inicializa el servletContext con el nombre de la aplicación de la cual queremos leer el contexto y finalmente saca por pantalla el valor del atributo “test”.
Archivos incluidos en el ejemplo
• server.xml: Ejemplo de configuración del fichero Server.xml para incluir el crossContext = true.
• CrossContextExample1.war y CrossContextExample2.war: Aplicaciones web de prueba.
• CrossContextExample1.war y CrossContextExample2.war: Fuentes preparadas para abrir en Eclipse.

No hay comentarios aún.