Seleccionar página

En las versiones anteriores JBoss AS / EAP, se utilizaba Apache Tomcat (o un fork) como contenedor web pero a partir de la versión WildFly 8 se ha sustituido por el proyecto Undertow (más detalle en http://undertow.io)

De ahí las diferencias que surgen en las configuraciones del Virtual Host y el contexto de las aplicaciones web entre JBoss AS / EAP y WildFly.

Configurando el fichero del servidor

La consola de administración de Wildfly (por defecto suele estar en http://[ip_jboss]:9990) es similar a la de JBoss EAP aunque ya no existe la opción de configurar el Virtual Host (por ejemplo http://wildfly1.neodoo.es y http://wildfly2.neodoo.es).

Para configurar el Virtual Host en WildFly, tendremos que  hacerlo directamente modificando el fichero de configuración $WILDFLY_HOME/standalone/configuration/standalone.xml si se arranca el servidor en modo standalone o $WILDFLY_HOME/domain/configuration/domain.xml en modo domain.

En nuestro proyecto, estamos utilizando el servidor en modo domain y desplegamos las aplicaciones en el server-group web-server vinculado al perfil full-ha. Por lo tanto, insertamos las definiciones de los virtual hosts en el fichero $WILDFLY/domain/configuration/domain.xml :

<profile name="full-ha">
  ...
  <subsystem xmlns="urn:jboss:domain:undertow:1.1">
    <buffer-cache name="default"/>
      <server name="default-server">
        <ajp-listener name="ajp" socket-binding="ajp"/>
          <http-listener name="default" socket-binding="http"/>
            <host name="default-host" alias="localhost">
              <location name="/" handler="welcome-content"/>
              <filter-ref name="server-header"/>
              <filter-ref name="x-powered-by-header"/>
            </host>
            <host name="wildfly1-host" alias="wildfly1.neodoo.es">
              <location name="/" handler="welcome-content"/>
              <filter-ref name="server-header"/>
              <filter-ref name="x-powered-by-header"/>
            </host>
            <host name="wildfly2-host" alias="wildfly2.neodoo.es">
               <location name="/" handler="welcome-content"/>
               <filter-ref name="server-header"/>
               <filter-ref name="x-powered-by-header"/>
            </host>
            ...
      </server>  
      ...
  </subsystem>                             
  ...

Creación de las aplicaciones WAR

A continuación, crearemos 2 aplicaciones WAR (una accesible en http://wildfly1.neodoo.es:8080/ y otra en http://wildfly2.neodoo.es:8080/) tomando la aplicación struts-blank.war existente en los ejemplos de la famosa framework MVC conocida como Apache Struts 1.x (el creador de este proyecto acabo contratado por Sun Microsystems y se encargó de elaborar las especificaciones de la tecnología Java Server Faces).

Descargamos el proyecto de aplicaciones de ejemplo para Struts 1.3.x desde aquí, descomprimimos el .zip y cogemos el fichero struts-blank-1.3.10.war.

 

Procedemos a confeccionar la aplicación struts-blank-wildfly1.war que se asociará a http://wildfly1.neodoo.es:8080/ :

  • Copiamos el fichero struts-blank-1.3.10.war con el nombre struts-blank-wildfly1.war.
  • Creamos el siguiente fichero jboss-web.xml (fijaros en la relación del parámetro de server-instance con el server name del fichero de configuración anterior):
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <context-root>/</context-root>
    <virtual-host>wildfly1-host</virtual-host>
    <server-instance>default-server</server-instance>
</jboss-web>
  • Metemos el fichero jboss-web.xml dentro del paquete struts-blank-wildfly1.war a la altura de WEB-INF/ (a la misma altura que web.xml).

Notas:

  • Como podéis ver, el fichero jboss-web.xml no contiene la directiva server-instance en  JBoss AS / EAP.
  • Si queréis desplegarla en un contexto diferente al raíz (/) basta con que cambiéis el contexto; por ejemplo poniendo <context-root>/wildfly</context-root> accederéis a la aplicación en http://wildfly1.neodoo.es/wildfly/

 

Ahora procedemos a confeccionar la aplicación struts-blank-wildfly2.war que se asociará a http://wildfly2.neodoo.es:8080/ :

  • Copiamos el fichero struts-blank-1.3.10.war con el nombre struts-blank-wildfly2.war.
  • Creamos el siguiente fichero jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <context-root>/</context-root>
    <virtual-host>wildfly2-host</virtual-host>
    <server-instance>default-server</server-instance>
</jboss-web>
  • Metemos el fichero jboss-web.xml dentro del paquete struts-blank-wildfly2.war a la altura de WEB-INF/ (a la misma altura que web.xml).

Y ojo al siguiente bug :

  • ¡ No dejéis comentarios dentro del fichero jboss-web.xml (del tipo <!– xxx –>) ya que el servidor Wildfly no lo lee correctamente ! Un quebradero de cabeza que nos ha supuesto horas de sufrimiento …

Despliegue de las aplicaciones

Ahora sólo nos queda desplegar los dos ficheros war o bien a través de la herramienta web o directamente desde línea de comando (herramienta CLI).

En nuestro caso, los desplegaremos dentro del grupo web-server y posteriormente tendremos acceso a cada aplicación desde http://wildfly1.neodoo.es:8080 y http://wildfly2.neodoo.es:8080 .

Otra notita:

  • Si no tenéis configurado los subdominios wildfly1.neodoo.es y wildfly2.neodoo.es en un servidor DNS, basta con que los linuxeros pongáis estos nombres en el fichero /etc/hosts .