ßeta perpetua

El blog personal de Juan Manuel Barroso

Contexto de una aplicación en JBOSS

2 Comments »

El contexto raíz de una aplicación web determina las URLs que serán delegadas por el servidor a nuestra aplicación, esto quiere decir que si tenemos un contexto raiz myapplication el servidor delegará a nuestra aplicación todas las peticiones del tipo myapplication/*.

El contexto raíz se carga durante el despliegue, y dependiendo del tipo de artefacto (EAR,  WAR) puede encontrarse en lugares diferentes.

Cuando estamos trabajando con un EAR el contexto de la aplicación debe ser especificado en el fichero application.xml, específicamente en la etiqueta <context-root/> del módulo correspondiente:

<application xmlns="http://java.sun.com/xml/ns/j2ee" version="1.4"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com /xml/ns/j2ee
                             http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
    <display-name>MyApplication</display-name>
 
    <module>
        <web>
            <web-uri>myApplication.war</web-uri>
            <context-root>myNewContext</context-root>
        </web>
    </module>
 
    <module>
        <ejb>my-library.jar</ejb>
    </module>
 
</application>

Si nuestra aplicación va a ser desplegada en un .war directamente, debemos modificar el fichero jboss-web.xml de la carpeta WEB-INF:

<jboss-web>
    <context-root>myNewContext</context-root>
</jboss-web>

De esta manera las peticiones a myNewContext/* serán delegadas a nuestra aplicación.

Si no especificamos un contexto al WAR, se usará el mismo nombre del fichero .war. Por ejemplo, para el desplegable otra-aplicacion.war se usará el contexto otra-aplicacion.

Esto puede ser útil cuando necesitemos publicar nuestra aplicación en una ruta del tipo: producto/consolas/myAplicacion.

Un caso real donde tuve que cambiar el contexto de una aplicación, fue desplegando un aplicación Grails que delegaba la parte de seguridad en SpringSecurity y sólo podía ser accesible desde una redirección de Apache. El problema era que el plugin no era capaz de redirigir desde la página de login a la primera página de la aplicación. Como solución inmediata cambie el contexto de la aplicación para que coincidiera con la URL de la redirección y problema solucionado.
Probablemente el plugin podía ser configurado para solucionar el problema, pero en aquel momento la aplicación debía estar en producción sin retrasos.

Probado con JBOSS 5 y Grails 1.3.7