« Atrás

Configuración del contenedor web, JBoss 5.1 (Parte 1)

El objetivo de la primera parte de este artículo es describir de una forma sencilla los conceptos básicos asociados al contenedor web con el que trabaja el servidor de aplicaciones JBoss 5.1.

Se pasan a comentar los directorios más importantes dentro de la configuración, el fichero server.xml y fichero war-deployers-jboss-beans.xml.

Introducción

Las tecnologías más habituales cuando se pretende desarrollar una aplicación web son servlets y JSP, los componentes web estándares JavaEE. Estas tecnologías pueden desplegarse en diferentes contenedores web, el más popular es Apache Tomcat.
Tomcat es capaz de hacer muchas más cosas que los servidores web nativos, por ejemplo, Microsoft IIS y Apache HTTP Server. Cosas como servir contenidos estáticos, soporte a hosts virtuales, CGI.

Tomcat está escrito en Java. Es un producto independiente de la máquina aunque históricamente más lento a la hora de servir contenidos estáticos que los servidores web nativos. Apache HTTP server es el líder en el mercado debido a su velocidad y altamente escalable. El servidor de aplicaciones JBoss usa un producto de Red Hat llamado JBoss Web Server.

JBoss Web Server combina la velocidad de Apache HTTP server y la versatilidad de Apache Tomcat. JBoss Web Server se construye sobre Tomcat 6.0 pero es capaz de usar la librería nativa de Apache, Apache Portable Runtime (APR) para obtener la velocidad de Apache HTTP Server.

A continuación, pasamos a describir las características básicas más importantes de este contenedor web.

Directorios importantes

Los dos directorios más importantes a la hora de trabajar con el contenedor web son:

  1. $JBoss/server//deploy/jbossweb.sar
  2. $JBoss/server//deployers/jbossweb.deployer/META-INF

Fichero server.xml

Este es el fichero de configuración más importante de JBoss Web Server. Como ya es sabido, éste se encuentra en el directorio server//deploy/jbossweb.sar. El fichero server.xml es casi idéntico al fichero server.xml del servidor Tomcat estándar.

La configuración del fichero se lleva a cabo definiendo componentes. Algunos de estos componentes son capaces de almacenar otros, es decir, son contenedores de componentes. Los elementos de configuración en este fichero pueden anidarse dentro de otros de diferentes formas. Los elementos más importantes son:

  1. Server: representa al contenedor de servlets.
  2. Service: contenedor de conectores que comparten un único Engine.
  3. Connector: elemento que se encarga de recibir peticiones usando un protocolo específico en un puerto determinado.
  4. Engine: es el elemento que se encarga de recibir todas las peticiones asociadas a todos los conectores definidos dentro de él. Este elemento debe ser definido después de todos los conectores.
  5. Realm: dominio de seguridad. Define como se gestiona la información de seguridad.
  6. Host: define hosts virtuales.
  7. Alias: define un alias para el elemento Host que lo envuelve.
  8. Valve: este elemento intercepta peticiones que entran en el sistema y ejecuta código antes de que la petición alcance el componente web objetivo.

Estructura de los elementos del fichero:

 +Server
  +Service
    + Connector
    + Engine
      + Valve
      + Realm
      + Host
        + Realm
        + Valve

 


Por defecto se define un único servicio llamado jboss.web:

<Server>
    <Service name="jboss.web">

        ...

    </Service>
</Server>

Todos los elementos se definen dentro del servicio, como por ejemplo, contectores, hosts, etc.

Por defecto, el fichero define dos conectores:

  1. Un conector que soporta el protocolo HTTP en el puerto 8080.
  2. Otro que soporta el protocolo AJP en el puerto 8009, permite la comunicación con servidores HTTP nativos. Lo utilizaremos cuando se quiera trabajar con balanceadores de carga.
<!-- A HTTP/1.1 Connector on port 8080 -->
<Connector protocol="HTTP/1.1" port="8080"
           address="${jboss.bind.address}"
           connectionTimeout="20000" redirectPort="8443" />
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3" port="8009"
           address="${jboss.bind.address}"
           redirectPort="8443" />

Importante:

  • Cuando se quiere trabajar con confidencialidad en la transmisión, es decir, con el protocolo HTTPS, se activa el tercer conector que aparece en el fichero, descomentándolo:
 <Connector protocol="HTTP/1.1" SSLEnabled="true"
     port="8443" address="${jboss.bind.address}"
     scheme="https" secure="true" clientAuth="false"
     keystoreFile=
      "${jboss.server.home.dir}/conf/chap8.keystore"
     keystorePass="rmi+ssl" sslProtocol = "TLS" />

 

Por defecto, el fichero define un elemento Engine:

...
<Engine name="jboss.web" defaultHost="localhost">
 
 <Realm
    className="org.jboss.web.tomcat.security.JBossWebRealm"             
    certificatePrincipal=
          "org.jboss.security.auth.certs.SubjectDNMapping"
    allRolesMode="authOnly"
  />

    ...

</Engine>


Dentro del elemento Engine se incluye un host virtual:

...
<Engine name="jboss.web" defaultHost="localhost">
    ...

  <Host name="localhost">
    ...
  </Host>
</Engine>
...

Fichero war-deployers-jboss-beans.xml

Define la forma en la que las aplicaciones web se despliegan en el servidor de aplicaciones.
El fichero define el elemento WarDeployer, este define una serie de propiedades que afectan a las aplicaciones:

  1. defaultSecurityDomain: define el dominio de seguridad por defecto de cualquier aplicación que no lo defina en su fichero jboss-web.xml.
  2. deleteWorkDirOnContextDestroy: se borra la carpeta work cuando se termina una aplicación.
Comentarios
URL de Trackback:

comments powered by Disqus