HomeApache Geronimo v1.0 > Documentación > Apache Geronimo v1.0 - Guía de Usuario > Tareas Administrativas


Este artículo es un intento de cubrir tantas tareas administrativas que sean posibles, comunes como no tan comunes. El artículo se agrupa en cuatro secciones principales, teniendo un flujo similar a lo que encontrarías ante el uso de la Consola de Administración Geronimo, facilitándote la familiarización tanto en tareas como consola.

Este artículo esta organizado con la secciones siguientes:

Referencia adicional:

Administrando el Servidor Apache Geronimo

En esta sección se cubren las tareas administrativas más comunes, diarias, y relacionadas con el servidor, con las cuales te podrías topar. Secciones subsecuentes se enfocarán en la configuración de servicios, administración de aplicaciones y configuración de seguridad.

Eligiendo al contenedor Web (Jetty ó Tomcat)

Cuando descargas y construyes Apache Geronimo a partir del código fuente (proporcionado por svn), obtendrías una estructura de directorios similar a la siguiente:

  • applications
  • assemblies
  • configs
  • docs_nopublish
  • etc
  • modules
  • openejb
  • plugins
  • sandbox
  • xdocs

Si navegas dentro del directorio assemblies encontrarás los siguientes subdirectorios:

  • j2ee-installer
  • j2ee-jetty-server
  • j2ee-tomcat-server

Nos enfocaremos en los dos últimos directorios que, como seguramente esperas, contienen imágenes independientes de Apache Geronimo, configuradas para usar alguno de los dos contenedores Web.

Dependiendo de que desees usar Jetty ó Tomcat, ingresarás al directorio respectivo (j2ee-jetty-server ó j2ee-tomcat-server), y la estructura interna de subdirectorios será la misma. Una vez que te encuentres dentro del directorio específico del contenedor Web, ingresa al directorio target/geronimo-1.0. Este directorio es tu servidor Apache Geronimo, independiente y totalmente completo. Podrías copiar este directorio a una ubicación distinta. A lo largo de estas series de artículos, las referencias a este directorio serán hechas con <geronimo_home>

Entonces, eligiendo al contenedor Web ya no consiste en cambiar archivos de configuración, más bien ahota es la elección de una estructura de directorio para assemblies diferentes. Dentro de esta estructura encontraras al directorio /bin; la siguiente sección explica los comandos almacenados en dicho directorio y el cómo iniciar y detener al servidor.

Regresar a la sección superior

Iniciando y deteniendo al servidor

Existen dos formas, mediante la línea de comandos, para iniciar al servidor. Desde una ventana de la línea de comandos ó una terminal, ingresa al directorio <geronimo_home>/bin. Desde ahí puedes teclear:

java -jar server.jar

ó simplemente

startup

Consulta las secciones Startup y Geronimo para obtener todas las opciones del comando en cuestión.

Para detener al servidor tendrás que abrir una nueva ventana de la línea de comandos ó una terminal, ingresar al directorio <geronimo_home>/bin y ejecutar al comando shutdown. Se te solicitará usuario (username) y contraseña (password). Consulta las secciones Shutdown y Geronimo para obtener las opciones disponibles del comando en cuestión.

Si el servidor ya se encuentra en ejecución, tienes la opción de emplear la Consola de Administración Geronimo para detenerlo (shutdown) de forma remota. Con el servidor arriba y en ejecución, abre un explorador Web e ingresa a la siguiente URL para tener acceso a la consola:

http://localhost:8080/console

Ingresa a la Consola de Administración Geronimo y haz clic en Shutdown, ubicado en el menú de Navegación de la Consola (Console Navigation), en la sección izquierda.

Al hacer clic en el botón Shutdown en el fragmento del Administrador del Servidor (Server Manager portlet), se te solicitará una o más veces la confirmación de la petición de detener al servidor. Haz clic en el botón Shutdown para confirmar y detener al servidor. No es necesario mencionar que, como consecuencia, se perderá la conexión con la Consola de Administración y necesitarás reiniciar al servidor desde una terminal ó desde una ventana de línea de comandos para retomar la conexión.

Regresar a la sección superior

Configurar el nivel de bitácora

Como se explicó en la sección Consola de Administración Geronimo, la Consola de Administración proporciona cuatro fragmentos (portlets) para la configuración e inspección de las bitácoras del servidor; dichos fragmentos son Log Manager, Server Log Viewer, Derby Log Viewer y Web Access Log Viewer.

Regresar a la sección superior

Log Manager

Las opciones del fragmento Log Manager (Administrador de Bitácora) son ilustradas en la siguiente figura. Desde este fragmento puedes especificar la ubicación del archivo de configuración de bitácora. Por defecto, dicho valor se establece con var/log/server-log4j.properties.

Otro valor que puedes modificar en este fragmento es Refresh Period _(Periodo de actualización)_. Este valor le dice a Geronimo con que frecuencia (en segundos) debería buscar cualquier cambio en el archivo de configuración. Por defecto, dicho valor se establece con 60 segundos.

Desde este fragmento también puedes cambiar el Log Level (Nivel de Bitácora). Por defecto su valor es INFO, y los valores posibles a elegir son All, DEBUG, INFO, WARN, ERROR, FATAL, TRACE and OFF.

Regresar a la sección superior

Server Log Viewer

Las opciones del portlet Server Log Viewer (Visor de la Bitácora del Servidor) se ilustran en la siguiente figura. Desde este portlet puedes ver las bitácoras del servidor Geronimo así como establecer filtros para redefinir al despliegue de resultados.

La liga Refresh (Refrescar) en la esquina superior izquierda, limpiará a todo criterio de filtrado que podrías haber especificado en los valores predefinidos de la Consola de Administración Geronimo, y desplegará las últimas 10 líneas (si existen) de la bitácora actual del servidor Geronimo.

El área Filter Results: (Resultados del Filtro) te permitirá especificar un criterio distinto de filtrado, para mayor particularidad en tu búsqueda. El menú de opciones File (Archivo) te permite elegir qué archivo de bitácora observar. Las bitácoras enlistadas en dicho menú se rigen por el Config File _(Archivo de Configuración)_ (server-log4j.properties por defecto) especificado en el portlet Log Manager. El número de archivos de bitácora a elegir en el mení File dependerá del número de archivos de bitácora definidos en el archivo de configuración server-log4j.properties.

Lines.. to.. _(Líneas.. a..)_ te permite especificar el rango de líneas de bitácora a analizar. Max Results (Máximos Resultados) limita la cantidad de líneas a ser desplegadas. Level (Nivel) sólo despliega los errores ocurridos para dicho Nivel de Bitácora. Containing text (Conteniendo texto) te permite especificar una cadena a buscar a lo largo de la bitácora del servidor. Al habilitar al checkbox With Exceptions (Con Excepciones) te desplegará tanto al error como su excepción, tomando en cuenta que el despliegue del stack trace será limitado a la cantidad de líneas establecidas en el valor Max Results.

Regresar a la sección superior

Derby Log Viewer

Las opciones del portlet Derby Log Viewer (Visor de Bitácora Derby) se ilustran en la siguiente figura. Desde este portlet puedes observar las bitácoras del servidor Derby, así como establecer los filtros para refinar los resultados desplegados.

La liga Refresh (Refrescar) en la esquina superior izquierda, limpiará a todo criterio de filtrado que podrías haber especificado en los valores predefinidos de la Consola de Administración Geronimo, y desplegará las últimas 10 líneas (si existen) de la bitácora actual de servidor Derby.

Similar al portlet Server Log Viewer, el área Filter Results: (Resultados del Filtro) te permitirá especificar un criterio distinto de filtrado para mayor particularidad en tu búsqueda. Lines.. to.. _(Líneas.. a..)_ te permite especificar el rango de líneas de bitácora a analizar. Max Results (Máximos Resultados) limita la cantidad de líneas a ser desplegadas y Containing text (Conteniendo texto) te permite especificar una cadena a buscar a lo largo de la bitácora del servidor.

Regresar a la sección superior

Web Access Log Viewer

Las opciones del portlet Web Access Log Viewer (Visor de Bitácora de Acceso Web) se ilustran en la siguiente figura. Desde este portlet puedes observar las bitácoras del servidor Web, así como establecer los filtros para refinar los resultados desplegados.

La liga Refresh (Refrescar) en la esquina superior izquierda, limpiará a todo criterio de filtrado que podrías haber especificado en los valores predefinidos de la Consola de Administración Geronimo. A diferencia del resto de portlets, Web Access Log Viewer te desplegará todas las líneas en la bitácora, sólo será limitado por las capacidades de despliegue de tu navegador web.

El área Filter Results: (Resultados del Filtro) te permitirá especificar un criterio distinto de filtrado para mayor particularidad en tu búsqueda. Para Web Access Log Viewer, esta área esta dividida en tres grupos principales: Date (Fecha), Identity (Identidad) y Requests (Peticiones).

  • Date:
    Te permite especificar al rango de fechas. Si se habilita al checkbox Ignore Dates (Ignorar Fechas), el filtrado no se hará discriminando las fechas. Todas las líneas de bitácora que cumplan con el resto de criterios de filtrado, serán desplegados sin importar su fecha.
  • Identity:
    Te permite especificar la Remote Address _(Dirección Remota)_ (p.e. 192.168.0.1) y Authenticated User (Usuario Autenticado) (p.e. system).
  • Request:
    Te permite especificar al Request Method (Método de Solicitud) y la Requested URI (URI Solicitada). Puedes elegir al Requested Method de un menú de opciones, siendo los valores posibles ANY, POST y GET. Para filtrar mediante Requested URI, sólo ingresa la URI, por ejemplo http://localhost:8080/console/login.jsp.

Regresar a la sección superior

Monitoreando rendimiento

Para monitorear el rendimiento del servidor Web, el portlet Web Server Manager (Administrador del Servidor Web) esta disponible al elegir Web Server (Servidor Web) del menú Console Navigation _(Navegación de Consola)_ ubicado en la sección izquierda. Por defecto, este portlet no esta habilitado; da clic al botón enable (habilitar) para iniciar la captura de estadísticas.

Al habilitarle, iniciarás la captura de información en la cantidad de peticiones, conexiones concurrentes, duración de peticiones, etc. La siguiente figura ilustra todos los valores que son recolectados.

Las tres ligas en la sección inferior te permiten refresh (actualizar) las estadísticas, disable (deshabilitar) al portlet y detener la captura de nuevos datos y reset (limpiar) los datos recolectados.

Nota que toda petición tuya, hecha desde la Consola de Administración Geronimo (por ejemplo, actualizar las estadísticas), también será reflejada en esta recolección de datos.

Regresar a la sección superior

Agregando nuevos oyentes (listeners) para los contenedores Web

Para la configuración de nuevos oyentes (HTTP, HTTPS y AJP) en el contenedor Web en uso (ya sea Jetty ó Tomcat), el portlet Network Listener (Oyente de Red) esta disponible al elegir Web Server (Servidor Web) en el menú de Console Navigation _(Navegación de Consola)_ situada a mano izquierda. Desde este portlet puedes agregar nuevos oyentes, así como cambiar el estado (stop, start, delete) (detener, iniciar, eliminar) de oyentes existentes.

Los procesos descritos a continuación son idénticos en ambos contenedores Web, tanto para Jetty como para Tomcat.

Agregar nuevo oyente (listener) HTTP

Para agregar un nuevo oyente HTTP, haz clic en la liga respectiva. La siguiente figura ilustra los distintos parámetros necesarios para la creación de un nuevo oyente HTTP. Este proceso es muy simple y los parámetros se explican por sí mismos; llena los valores y haz clic en Save (Guardar).

Regresar a la sección superior

Agregar nuevo oyente (listener) HTTPS

Para agregar un nuevo oyente HTTPS, haz clic en la liga respectiva. La siguiente figura ilustra los distintos parámetros necesarios para la creación de un nuevo oyente HTTPS. Este proceso es muy simple y los parámetros se explican por sí mismos; llena los valores y haz clic en Save (Guardar).

Regresar a la sección superior

Agregar nuevo oyente (listener) AJP

Para agregar un nuevo oyente AJP, haz clic en la liga respectiva. La siguiente figura ilustra los distintos parámetros necesarios para la creación de un nuevo oyente AJP. Este proceso es muy simple y los parámetros se explican por sí mismos; llena los valores y haz clic en Save (Guardar).

Regresar a la sección superior

Configurando al servidor JMS

Para la configuración del servidor JMS, el portlet de JMS Network Listeners (Oyentes de Red JMS) está disponible mediante la selección de JMS Server (Servidor JMS) en el menú de la Console Navigation _(Navegación de Consola)_ situada a mano izquierda. Al hacer clic en JSM Server también obtendrás al portlet JMS Server Manager (Administrador del Servidor JMS), el cual despliega los agentes (brokers) disponibles en el servidor, así como su estado. Las siguientes figuras ilustran ambos portlets y sus opciones.

Desde el portlet JMS Network Listeners puedes agregar nuevos oyentes, así como cambiar el estado (stop, start, delete) (detener, iniciar, eliminar) de los existentes. Las opciones disponibles para agregar conectores a ActiveMQ ya se han mostrado en la figura.

Para agregar un nuevo conector a ActiveMQ has clic en la liga apropiada. La siguiente figura ilustra a los distintos parámetros necesarios para la creación de estos conectores. Este proceso es muy simple y los parámetros se explican por sí mismos; llena los valores y haz clic en Save (Guardar).

Nota que las mismas opciones te serán presentadas, independientemente de cual oyente desees agregar.

Detalles en como configurar fábricas de conexiones, colas, tópicos y destinos son cubiertos en la siguiente sección Configurando JMS.

Regresar a la sección superior

Configurando Servicios

Existen tres tareas mayores a ser cubiertas en esta sección, las cuales son:

  • Agregando artefactos al repositorio Geronimo
  • Configurando pools de bases de datos
  • Configurando JMS

Agregando artefactos al repositorio Geronimo

Para agregar artefactos al repositorio, el portlet Repository Viewer (Visor de Repositorio) esta disponible al elegir Common Libraries _(Librerías en Común)_ en el menú de Console Navigation _(Navegación de Consola)_ ubicado a mano izquierda. El portlet Repository Viewer que se ilustra en la figura siguiente, despliega los artefactos instalados en el repositorio del servidor. La presentación del repositorio es la misma que se usa en Apache Maven, lo cual facilita el copiado de archivos.

Para usar un artefacto en una aplicación, agrega un elemento de dependencia en su plan de activación (deployment plan). Por ejemplo, para usar Castor XML, agrega el siguiente código XML al plan:

<dependency>
        <uri>castor/jars/castor-0.9.5.3.jar</uri>
</dependency>

Regresar a la sección superior

Configurando pools de bases de datos

Para configurar pools de bases de datos, el portlet Database Pools (Pools de Bases de Datos) esta disponible al elegir Database Pools en el menú de la Console Navigation _(Navegación de Consola)_ ubicado a mano izquierda. El portlet Database Pools ilustrado en la figura siguiente, muestra todo pool de base de datos disponible y proporciona ayudantes para importar ó crear nuevos pools.

Crear nuevos pools de base de datos

Puedes crear nuevos pools mediante clic en la liga Using the Geronimo database pool wizard (Usando al ayudante Geronimo de pool de base de datos) dentro del portlet Database Pools. Este ayudante te guiará a durante el procedimiento de 4 pasos sencillos.

Consulta Configurando al Datasource DB2 para un ejemplo funcional adicional en datasources con archivos jar (controlador+licencia) múltiples.

Primero necesitas especificar el nombre del pool de base de datos, así como su tipo de base de datos.

Posteriormente seleccionas los controladores JDBC, los cuales por defecto son pre-llenados, basándose en el tipo de base de datos que seleccionaste en el paso previo. También debes seleccionar al JAR del controlador desde el menú de selección y después especificar el nombre de la base de datos. Para este ejemplo, una base de datos test (prueba) fue creada previamente; se trata del proceso de creación con un solo paso, el cual es explicado en Crear una base de datos.

El siguiente paso te permite configurar algunos parámetros de conexión, como el tamaño del pool (mínimo y máximo) y tolerancias de tiempo. Al estar satisfecho con los parámetros, haz clic en Test Connection _(Probar Conexión)_.

Al haber probado satisfactoriamente la conexión, haz clic en Deploy Tool _(Herramienta de Activación)_. Como alternativa, puedes hacer clic en Show Deployment Plan _(Muestra Plan de Activación)_ para este pool de base de datos y también te permite editarle. Instrucciones adicionales en el como activar manualmente un plan de BD, puede encontrarse en la sección Configurando al Datasource DB2.

Al haber sido activado, Derby_Test (Prueba_Derby) debería ser listado junto con el resto de pools de bases de datos.

Regresar a la sección superior

Importar pools de bases de datos de JBoss 4

Este ayudante te asistirá en la importación de pools de bases de datos JBoss 4 existentes. Para este ejemplo particular, usaremos al hsqldb-ds.xml proporcionado por el servidor JBoss default, esto es <jboss_home>\server*default*\deploy\hsqldb-ds.xml junto con la base de datos Hypersonic.

Antes de continuar, deberás proporcionar a Geronimo al jar controlador para Hypersonic HSQL. Para hacerlo, deberás seguir pasos similares a los descritos en Configurando al Datasource DB2. A continuación se presenta un resumen de pasos para la declaración del jar controlador HSQL en Geronimo.

  1. Crea un registro en el repositorio Geronimo para identificar a los controladores para Hipersonic. Para este ejemplo, creamos <geronimo_home>\repository\ org.hsqldb.Server\jars. Nota que creamos dos directorios.
  2. Localiza al controlador jar HSQL hsqldb.jar. Este archivo se encuentra en el directorio <jboss_home>\server\default\lib. Haz una copia de dicho archivo y cambia su nombre a hsqldb-1.8.0.jar.
  3. Copia al archivo renombrado hacia el registro del repositorio que creaste previamente, <geronimo_home>\repository\org.hsqldb.Server\jars. El omitir el cambio de nombre del archivo antes de copiarlo al repositorio, causará que Geronimo lance una excepción, ya que no puede leer al formato del nombre del archivo. El nombre del archivo del controlador debe ser versionado.

Regresa a la Consola de Administración Geronimo y haz clic en la liga Database Pools (Pools de Bases de Datos). Desde el portlet Database Pools haz clic en Import from JBoss 4 (Importar de JBoss 4). En el Step 1 (Paso 1) de Import Database Pools (Importar Pools de Bases de Datos) especifica la ubicación del archivo -ds.xml y haz clic en Next (Siguiente).

Al finalizar la carga del datasource JBoss, Setp 2 (Paso 2) lista los pools de bases de datos que pudo reconocer el ayudante, gracias al archivo hsqldb-ds.xml. Haz clic en Confirm and Deploy (Confirmar y Activar).

El siguiente paso te permite editar al pool de base de datos que fue reconocido. En este paso deberás especificar al jar controlador que declaraste cuando actualizaste al repositorio de Geronimo. Observa como se lista Driver JAR: ( JAR Controlador: ) en la siguiente figura.

Haz clic en Test Connection _(Probar Conexión)_ para verificar que proporcionaste todos los datos necesarios y que Geronimo pueda establecer una conexión.

Haz clic en Deploy (Activar), lo cual te llevará a la misma página de Step 2. Si deberías tener más pools definidos en el archivo, podrías repetir los pasos para importar los pools de bases de datos que elijas. Como en este ejemplo solo tenemos uno, tendrías que hacer clic en Finish (Finalizar) para completar el uso del ayudante de importación.

Ahora deberías ver al pool de bases de datos importado, DefaultDS.

Regresar a la sección superior

Importar pools de bases de datos de WebLogic 8.1

Este ayudante te ofrece dos alternativas para la importación de pools de bases de datos BEA Weblogic existentes. La primera es proporcionando un archivo de configuración (por ej. config.xml); si seleccionas esta opción, el ayudante convertirá a tantos campos que pueda, y te solicitará el ingresar manualmente aquellos que no pudo convertir. Por ejemplo, uno de los valores que deberás proporcionar, es la contraseña de la base de datos.

La segunda alternativa es factible si tienes tanto al servidor Apache Geronimo como al servidor BEA Weblogic instalados en la misma máquina; en esta alternativa puedes especificar directamente al path de instalación de Weblogic así como los directorios del dominio. Esta alternativa tiene la ventaja de ser capaz de leer directamente las contraseñas de bases de datos.

Independientemente de la altermativa que eligieses, necesitarás decir a Geronimo donde se encuentran los jars controladores de las bases de datos. A continuación se presenta el resumen de pasos para la declaración del jar controlador PointBase en Geronimo.

  1. Crea un registro en el repositorio Geronimo para identificar los controladores para PointBase. Para este ejemplo hemos creado <geronimo_home>\repository\ com.pointbase\jars. Nota que creamos dos directorios.
  2. Localiza al jar controlador de cliente PointBase, pbclient44.jar. El archivo se localiza en el directorio <bea_home>weblogic81\common\eval\pointbase\lib. Haz una copia de dicho archivo y cambia su nombre a pbclient-4.4.0.jar.
  3. Copia al archivo renombrado en al registro del repositorio que creaste previamente, <geronimo_home>\repository\com.pointbase\jars. El omitir el cambio de nombre del archivo antes de copiarlo al repositorio, causará que Geronimo lance una excepción, ya que no puede leer al formato del nombre del archivo. El nombre del archivo del controlador debe ser versionado.

Regresa a la Consola de Administración Geronimo y haz clic en la liga Database Pools (Pools de Bases de Datos). Desde el portlet Database Pools haz clic en Import from WebLogic 8.1 (Importar de WebLogic 8.1). La siguiente figura ilustra al ayudante de importación.

Para este ejemplo particular nos enfocaremos en la segunda alternativa. Un dominio example (ejemplo) por defecto fue creado en el servidor WebLogic con toda aplicación ejemplo también incluida por defecto. Este dominio se licaliza en el directorio <bea_home>\user_projects\domains\examples.

En la primer pantalla del ayudante de importación (ilustrado en la figura previa) proporciona al Domain directory path: ( Path del directorio del cominio: ) y haz clic en Next (Siguiente).

Domain directory path: <bea_home>\user_projects\domains\examples

weblogic81/server/lib path: <bea_home>\weblogic81\server\lib

El Step 2 (Paso 2) ilustrado en la siguiente figura, te muestra una lista de pools de bases de datos reconocidos del dominio WebLogic que especificaste y que pueden ser importados a Apache Geronimo.

Nota que el dominio WebLogic del cual estas intentando importar al pool de bases de datos, debe estar activo si deseas probar exitosamente la conexión. Para este ejemplo haz clic en la segunda Confirm and Deploy (Confirma y Activa) de la lista, la cual corresponde a examples-dataSource-demoPool.

En el siguiente paso selecciona al Driver JAR: ( JAR Controlador: ) que creaste recientemente en el repositorio Geronimo.

Nota que la contraseña de la base de datos ha sido reconocida. Haz clic en Test Connection _(Probar Conexión)_, con lo cual deberías ver una confirmación similar a la siguiente figura. Haz clic en Deploy (Activar).

La siguiente página regresa al Step 2, en esta ocasión también desplegará los pools de bases de datos restantes y disponibles para su importación, y también mostrará el estado de importación del pool de base de datos recién importado. En este momento puedes hacer clic en Skip Remaining Pools (Omitir Pools Restantes) para dejar al ayudante de importación.

Ahora deberías observar listado en el portlet de pool de base de datos, al pool de base de datos que acabas de importar.

Eliminando pools de bases de datos

Para eliminar los pools de bases de datos, puedes usar la Herramienta de activación. Entre otras cosas, dicha herramienta te permite listar a los módulos disponibles, donde la pool que acabas de activar será listada como un módulo.

Para listar a todo módulo disponible, teclea el comando siguiente:

E:\geronimo\bin>deploy --user system --password manager list-modules | grep user/database

  + user/database-pool-Derby_Test/1/car

Para este comando ejemplo, grep fue usado con fines de despliegue; el uso de grep es opcional.

Una vez que tienes identificado el pool de base de datos (en este ejemplo user/database-pool-Derby_Test/1/car) podrías eliminarle mediante el tecleo del siguiente comando:

E:\geronimo\bin>deploy --user system --password manager undeploy user/database-pool-Derby_Test/1/car

    Module user/database-pool-DerbyTest/1/car unloaded.

    Module user/database-pool-DerbyTest/1/car uninstalled.

    Undeployed user/database-pool-DerbyTest/1/car

Como paso adicional para verificar la baja del pool de base de datos, puedes ejecutar al siguiente comando; no deberían listarse registros.

deploy --user system --password manager list-modules | grep Derby_Test

Regresar a la sección superior

Crear una base de datos

Para crear una nueva base de datos e integrarla a Geronimo, el portlet DB Manager (Administrador de BD) está disponible. Cerca de la porción inferior del menú de Console Navigation _(Navegación de Consola), navega en Misc -> Embedded DB -> DB Manager. Ese portlet invoca a los portlets DB Viewer _(Visor de BD) y Run SQL (Ejecuta SQL), ilustrados en las siguientes figuras.


El portlet DB Viewer despliega toda base de datos disponible, sus tablas (de aplicación y sistema) y despliega el contenido de las tablas.

El portlet Run SQL te permite ejecutar comandos SQL para crear o eliminar bases de datos, y también para modificar el contenido de sus tablas. Este portlet te proporciona menúes de selección para elegir la base de datos sobre la cual desees ejecutar al comando.

Para crear una base de datos de pruebas, especifica test (prueba) en el campo Create DB: ( Crear BD: ) y haz clic en Create (Crear). Después de pocos segundos, deberías ver un mensaje de confirmación cerca de la porción inferior del portlet Run SQL, indicando Database created: test (Base de datos creada: prueba). Ahora se debería ver el registro de la base de datos test en el portlet DB Viewer.

Si deseas ejecutar cualquier comando SQL en esa base de datos, asegúrate de elegir test del menú de selección Use DB: ( Usa BD: ), para después ingresar el comando SQL y finalmente hacer clic al botón Run SQL. Los resultados del comando se deplegarán cerca de la porción inferior del portlet.

Regresar a la sección superior

Configurando JMS

Para configurar JMS, los portlets JMS Connection Factories _(Fábricas de Conexión JMS)_ y JMS Destination Manager (Administrador de Destino JMS) son elegibles mediante JMS en el menú de Console Navigation _(Navegación de Consola)_ ubicado a mano izquierda. El portlet JMS Connection Factories, ilustrado en la figura siguiente, despliega a todo conector JMS configurado en el servidor Geronimo y te permite agregar una nueva Fábrica de Conexión JMS.

El portlet JMS Destination Manager presenta la lista de toda cola (queue) y tópico configuradas(os) en el servidor Geronimo.

En Apache Geronimo v1.0 estos portlets no estan totalmente implementados y necesitarás crear planes de activación (deployment plans) y herramientas de línea de comandos para activar a estas configuraciones. Detalles adicionales para la configuración JMS y su integración se encuentran cubiertos en la sección Integrando un Proveedor JMS de terceros.

Regresar a la sección superior

Administrando aplicaciones

Esta sección se concentra en las alternativas disponibles para la administración de aplicaciones, y te mostrará el como aplicar las actividades de administración de aplicaciones, usando tanto la Consola de Administración Geronimo y opciones de línea de comandos. Para los ejemplos mostrados en esta sección, estaremos usando la aplicación ejemplo HolaMundo.war creada en la sección Guía rápida - Apache Geronimo para el impaciente.

Instalando y eliminando aplicaciones

Para ejecutar estas actividades actualmente tienes tres opciones disponibles, las cuales usan:

Cuando empaques tu aplicación, podrías incluir o no incluir al plan de activación (deployment plan) en el paquete. Al momento de activación, Geronimo buscará los planes de activación geronimo-web.xml y web.xml, en el directorio WEB-INF dentro de tu aplicación empaquetada. Si Geronimo no puede encontrar dichos descriptores, intentará activar a la aplicación usando configuraciones por defecto. Si al emplear configuraciones por defecto falla, necesitarás proporcionar un plan de activación, ya sea re-empaquetando la aplicación ó como plan de activación externo; en las siguientes secciones discutiremos más a fondo dichas alternativas.

Consola de Administración Geronimo

Para instalar una nueva aplicación mediante la Consola de Administración Geronimo, el portlet Install New Applications (Instalar Aplicaciones Nuevas) esta disponible al elegir Deploy New (Activar Nuevo) en el menú de la Console Navigation _(Navegación de Consola)_ ubicado a mano izquierda. Este portlet también te permite el iniciar automáticamente a la aplicación justo después de su activación.

Como se mencionó previamente, para este ejemplo emplearemos la aplicación JSP simple HolaMundo, creada en la sección Guía rápida - Apache Geronimo para el impaciente. Para ese ejemplo, los planes de activación ya están incluidos en el paquete.

Desde el portlet Install New Applications haz clic en Browse (Navegar) para especificar la ruta al HolaMundo.war en la sección Archive: ( Archivo: ). Asegurate de habilitar (por defecto, está habilitado) la opción Start app after install _(Iniciar aplicación después de instalar)_ y después haz clic en Install (Instalar).

Deberías obtener al mensaje de confirmación " The application was successfully deployed. " _(La aplicación fue activada exitosamente)_ en la sección superior del portlet.

Otra forma de comprobar que la aplicación fue instalada e iniciada exitosamente, se logra mediante la verificación del portlet Installed Web Applications (Aplicaciones Web Instaladas), el cual esta disponible mediante al elegir Web App WARs (WARs de Aplicaciones Web) en el menú de la Console Navigation _(Navegación de Consola)_ ubicado a mano izquierda. Deberías observar a la aplicación listada como HolaMundo y con el estado running (ejecutando).

Como la aplicación que instalamos es HolaMundo.WAR, usamos ese portlet; cuando instalas un EAR podrías verificar su estado mediante el portlet Installed Application EARs (Aplicaciones EAR Instaladas), el cual esta disponible al elegir Application EARs (EARs de Aplicaciones) en el menú de la Console Navigation _(Navegación de Consola)_ ubicado a mano izquierda. El procedimiento de instalación es el mismo, tanto para aplicaciones WAR como EAR.

Para eliminar a las aplicaciones mediante la Consola de Administración Geronimo usarás los dos últimos portlets, ya sea Installed Web Applicacions ó Installed Application EARs, dependiendo de la aplicación a desinstalar.

Para nuestro ejemplo, ingresa al portlet de Aplicaciones Web Instaladas y haz clic en Uninstall (Desinstalar) para el Component Name (Nombre del Componente) HolaMundo. Lo anterior detendrá a la aplicación como primer paso y después la desintalará. El mensaje de confirmación " Uninstalled application " _(Aplicación desintalada)_ debería aparecer en la parte inferior del portlet.

Estos son los pasos básicos para la instalación y desinstalación de aplicaciones mediante la Consola de Administración Geronimo; las dos secciones siguientes se concentarán en opciones de línea de comandos.

Regresar a la sección superior

Herramienta de Activación

La herramienta de activación te permitirá, entre otras cosas, el instalar y desinstalar aplicaciones mediante la línea de comandos. En esta sección analizaremos esas dos tareas para la aplicación ejemplo; esta herramienta es completamente cubierta en la sección Herramienta de activación.

Para activar la aplicación ejemplo HolaMundo.war con la Herramienta de Activación, abre una ventana de línea de comandos y desde el directorio <geronimo_home>\bin teclea el siguiente comando:

deploy --user system --password manager deploy <app_home>\HolaMundo.war

Una vez activada la aplicación, deberías observar un mensaje de confirmación similar al siguiente:

E:\geronimo-1.0_Jetty\bin>deploy --user system --password manager deploy ..\..\HolaMundo\HolaMundo.war
    Deployed HolaMundo @ http://localhost:8080/hola

A diferencia de la activación mediante la Consola de Administración Geronimo, la herramienta de línea de comandos te proporciona mayor información en el mensaje de confirmación. Por ejemplo, recibes el Component Name (Nombre del Componente) (también conocido como ConfigId) y también recibes la raíz del contexto (context root) en donde la aplicación fue activada. Esto es muy útil cuando se instala, prueba y desinstala a distintas aplicaciones donde sería complicado el recordar todos esos valores.

También puedes usar la Herramienta de activación para listar a toda aplicación instalada. El comando list-modules _(listar-módulos)_ te permite el listar a toda aplicación, e incluso te permite filtrar la petición mediante la solicitud de sólo las aplicaciones started (iniciadas) ó stopped (detenidas). El comando list-modules sin parámetro adicional, por defecto te listará a toda aplicación iniciada.

Para desintalar una aplicación, podrías requerir el listarla para obtener el Nombre del Componente (ó ConfigId) correcto. Ejecuta al siguiente comando desde el directorio <geronimo_home>\bin :

deploy --user system --password manager list-modules

Recibirás una lista similar a la mostrada en el ejemplo siguiente:

E:\geronimo-1.0_Jetty\bin>deploy --user system --password manager list-modules
Found 33 modules
  + geronimo/j2ee-deployer/1.0/car
  + geronimo/webconsole-jetty/1.0/car
      `-> geronimo-console-standard-1.0.war @ http://localhost:8080/console-standard
      `-> geronimo-console-framework-1.0.war @ http://localhost:8080/console
  + geronimo/welcome-jetty/1.0/car @ http://localhost:8080/
  + geronimo/daytrader-derby-jetty/1.0/car
      `-> daytrader-web-1.0.war @ http://localhost:8080/daytrader
      `-> daytrader-ejb-1.0.jar
      `-> daytrader-streamer-1.0.jar
      `-> daytrader-wsappclient-1.0.jar
      `-> TradeDataSource
      `-> TradeJMS
  + geronimo/jetty-deployer/1.0/car
  + geronimo/directory/1.0/car
  + geronimo/ldap-realm/1.0/car
  + geronimo/j2ee-system/1.0/car
  + geronimo/activemq/1.0/car
  + geronimo/j2ee-server/1.0/car
  + geronimo/ldap-demo-jetty/1.0/car @ http://localhost:8080/ldap-demo
  + geronimo/jetty/1.0/car
  + geronimo/geronimo-gbean-deployer/1.0/car
  + geronimo/jsp-examples-jetty/1.0/car @ http://localhost:8080/jsp-examples
  + geronimo/rmi-naming/1.0/car
  + geronimo/servlets-examples-jetty/1.0/car @ http://localhost:8080/servlets-examples
  + geronimo/remote-deploy-jetty/1.0/car @ http://localhost:8080/remote-deploy
  + geronimo/system-database/1.0/car
  + geronimo/j2ee-security/1.0/car
  + HolaMundo @ http://localhost:8080/hola
  + geronimo/activemq-broker/1.0/car
  + geronimo/jmxdebug-jetty/1.0/car @ http://localhost:8080/debug-tool
  + geronimo/hot-deployer/1.0/car
  + geronimo/uddi-jetty/1.0/car
      `-> uddi-jetty @ http://localhost:8080/juddi
      `-> uddi-db
    geronimo/client-system/1.0/car
    geronimo/online-deployer/1.0/car
    geronimo/client-corba/1.0/car
    geronimo/daytrader-derby-jetty-streamer-client/1.0/car
    geronimo/client-security/1.0/car
    geronimo/shutdown/1.0/car
    geronimo/client/1.0/car
    geronimo/javamail/1.0/car
    geronimo/j2ee-corba/1.0/car

Busca el registro HolaMundo, el cual es el valor que deberás emplear cuando intentes desinstalar a la aplicación.

Para desinstalar la aplicación, ejecuta el siguiente comando desde el directorio <geronimo_home>\bin usando al Nombre del Componente que identificaste ante el listado de los módulos.

deploy --user system --password manager undeploy HelloWorld

El comando primero intentará detener a la aplicación en ejecución y después la desinstalará. Deberías ver un mensaje de confirmación similar al siguiente:

E:\geronimo-1.0_Jetty\bin>deploy --user system --password manager undeploy HolaMundo
    Module HolaMundo unloaded.

    Module HolaMundo uninstalled.


    Undeployed HolaMundo

En este ejemplo has usado la misma herramienta con tres comandos distintos:

  • deploy
  • list-modules
  • undeploy

Estas no son las únicas opciones y comandos disponibles para esta herramienta; por favor visita la sección Herramienta de activación para obtener detalles adicionales.

Regresar a la sección superior

Activación en vivo

Apache Geronimo soporta Hot Deployment _(Activación en Vivo)_. Esto significa que puedes copiar un archivo JAR de aplicación al directorio <geronimo_home>/deploy y la aplicación será activada automáticamente. Lo anterior también funcionará para la desinstalación ó actualización de aplicaciones previamente activadas mediante este método. Como alternativa, también podrías copiar al directorio (umpacked - "desempacado") del módulo aplicación en lugar de copiar al JAR como archivo.

Nota que con este método de activación debes incluir al deployment plan _(plan de activación)_ en el paquete de la aplicación; este método no soporta planes de activación externos. También nota que aplicaciones activadas mediante la Herramienta de activación ó la Consola de Administración Geronimo, no estarán listadas en el directorio <geronimo_home>/deploy.

Cuando copies una aplicación al directorio deploy, digamos HolaMundo.war, observarás un mensaje de confirmación en la consola donde Geronimo este ejecutándose, indicando que la aplicación fue activada y el contexto para tener acceso a la aplicación.

00:35:59,421 INFO  [Hot Deployer] Deploying HolaMundo.war
    Deployed HolaMundo @ http://localhost:8080/hola

Para eliminar la aplicación, sólo borra al archivo (ó carpeta) WAR ó EAR del directorio deploy. Cuando la aplicación ha sido eliminada, deberías observar un mensaje de confirmación en la consola donde Geronimo esté ejecutándose, indicando que la aplicación fue desactivada.

00:39:42,521 INFO  [Hot Deployer] Undeploying HolaMundo.war
    Undeployed HolaMundo

Regresar a la sección superior

Iniciando y deteniendo módulos de aplicación

Puedes cambiar el estado de una aplicación en dos formas distintas. Puedes usar la Herramienta de activación ó la Consola de Administración Geronimo.

Como se mencionó previamente, la *Herramienta de activación* tiene muchos comandos. Al momento hemos explorado primordialmente a deploy y undeploy, y brevemente a list-modules. Esta sección se concentrará en el último comando para obtener el nombre del módulo del cual queremos cambiar el estado, e introducirá dos nuevos comandos: start (iniciar) y stop (detener). Más adelante discutiremos el uso de la Consola de Administración Geronimo como método alternativo.

El comando list-module acepta a los tres parámetros siguientes:

  • --all : se usa por defecto cuando no otra opción se especifica. Listará a todo módulo disponible.
  • --started : esta opción listará sólo a los módulos que se encuentren en ejecución.
  • --stopped : esta opción listará sólo a los módulos que no se encuentren en ejecución.

Esto es útil para identificar el estado de un módulo particular y al ID propio del módulo. Usaremos este comando para identificar a la aplicación HolaMundo y cambiar su estado.

Desde una ventana de la línea de comandos, ejecuta al siguiente comando desde el directorio <geronimo_home>\bin para listar a todo módulo:

deploy --user system --password manager list-modules

Recibirás una lista de todo módulo instalado en el servidor. Nota que los módulos iniciados son distinguidos con el signo + ubicado a su izquierda, y dichos módulos también se colocan como inicio de la lista.

E:\geronimo-1.0_Jetty\bin>deploy --user system --password manager list-modules
Found 33 modules
  + geronimo/j2ee-deployer/1.0/car
  + geronimo/webconsole-jetty/1.0/car
      `-> geronimo-console-standard-1.0.war @ http://localhost:8080/console-standard
      `-> geronimo-console-framework-1.0.war @ http://localhost:8080/console
  + geronimo/welcome-jetty/1.0/car @ http://localhost:8080/
  + geronimo/daytrader-derby-jetty/1.0/car
      `-> daytrader-web-1.0.war @ http://localhost:8080/daytrader
      `-> daytrader-ejb-1.0.jar
      `-> daytrader-streamer-1.0.jar
      `-> daytrader-wsappclient-1.0.jar
      `-> TradeDataSource
      `-> TradeJMS
  + geronimo/jetty-deployer/1.0/car
  + geronimo/directory/1.0/car
  + geronimo/ldap-realm/1.0/car
  + geronimo/j2ee-system/1.0/car
  + geronimo/activemq/1.0/car
  + geronimo/j2ee-server/1.0/car
  + geronimo/ldap-demo-jetty/1.0/car @ http://localhost:8080/ldap-demo
  + geronimo/jetty/1.0/car
  + geronimo/geronimo-gbean-deployer/1.0/car
  + geronimo/jsp-examples-jetty/1.0/car @ http://localhost:8080/jsp-examples
  + geronimo/rmi-naming/1.0/car
  + geronimo/servlets-examples-jetty/1.0/car @ http://localhost:8080/servlets-examples
  + geronimo/remote-deploy-jetty/1.0/car @ http://localhost:8080/remote-deploy
  + geronimo/system-database/1.0/car
  + geronimo/j2ee-security/1.0/car
  + HolaMundo @ http://localhost:8080/hola
  + geronimo/activemq-broker/1.0/car
  + geronimo/jmxdebug-jetty/1.0/car @ http://localhost:8080/debug-tool
  + geronimo/hot-deployer/1.0/car
  + geronimo/uddi-jetty/1.0/car
      `-> uddi-jetty @ http://localhost:8080/juddi
      `-> uddi-db
    geronimo/client-system/1.0/car
    geronimo/online-deployer/1.0/car
    geronimo/client-corba/1.0/car
    geronimo/daytrader-derby-jetty-streamer-client/1.0/car
    geronimo/client-security/1.0/car
    geronimo/shutdown/1.0/car
    geronimo/client/1.0/car
    geronimo/javamail/1.0/car
    geronimo/j2ee-corba/1.0/car

Ahora nuestro objetivo es " + HolaMundo @ http://localhost:8080/hola " , el cual presenta estado started (iniciado) ya que cuenta con + a su izquierda. Como alternativa, puedes ejecutar al siguiente comando para listar sólo a módulos iniciados:

deploy --user system --password manager list-modules --started

Para detener al módulo HolaMundo, teclea el siguiente comando:

deploy --user system --password manager stop HelloWorld

Recibirás un mensaje de confirmación para indicar que el módulo ha sido detenido.

Cuando listas a todo módulo detenido, ahora deberías observar que a esa lista se agregó al módulo HolaMundo. Observa al comando y sus resultados en el siguiente ejemplo.

E:\geronimo-1.0_Jetty\bin>deploy --user system --password manager list-modules --stopped
Found 10 modules
    geronimo/client-system/1.0/car
    geronimo/online-deployer/1.0/car
    geronimo/client-corba/1.0/car
    geronimo/daytrader-derby-jetty-streamer-client/1.0/car
    geronimo/client-security/1.0/car
    geronimo/shutdown/1.0/car
    HolaMundo
    geronimo/client/1.0/car
    geronimo/javamail/1.0/car
    geronimo/j2ee-corba/1.0/car

Para iniciar los módulos, sólo necesitas emplear start en lugar de stop.

Como alternativa a la línea de comandos, puedes usar la Consola de Administración Geronimo para cambiar el estado de los módulos. Abre la Consola de Administración Geronimo y navega a Applications (Aplicaciones) en el menú de la Console Navigation _(Navegación de Consola)_ ubicado a mano izquierda. Ahí encontrarás Application EARs _(EARs de Aplicación)_ y Web App WARs _(WARs de Aplicación Web)_; dependiendo del tipo de aplicación de la cual quieras cambiar el estado, eligirás ya sea Application EARs ó Web App WARs. Para este ejemplo continuaremos el uso de HolaMundo.war como la aplicación en cuestión, por lo cual elegiremos Web App WARs.

Previamente usamos este portlet para instalar y desintalar aplicaciones mediante la consola. Desde este mismo portlet también puedes cambiar el estado de las aplicaciones. Los comandos disponibles dentro del portlet cambiarán dependiendo del estado de cada aplicación. Si la aplicación esta en estado running (iniciada), sólo el comando Stop (Detener) será desplegado. Si la aplicación esta stopped (detenida), sólo el comando Start (iniciar) será desplegado. El comando Uninstall (Desinstalar) siempre se desplegará sin importar el estado de la aplicación. Para cambiar el estado de la aplicación sólo haz clic al comando (Iniciar ó Detener).

Regresar a la sección superior

Administrando seguridad

Esta sección cubre algunas de las tareas comunes relacionadas con seguridad, como el agregar y eliminar usuarios y grupos, la manipulación de certificados digitales y el incremento del nivel de seguridad mediante el uso de distintos reinos (realms) y métodos de autenticación. Consulte la sección de Seguridad para mayor detalle en como se implementa la seguridad en Apache Geronimo.

Administrando usuarios y grupos

Puedes agregar usuarios y grupos mediante la Consola de Administración Geronimo ó con la modificación de algunos archivos de configuración. Iniciaremos de forma simple, con el uso del reino proporcionado por defecto en Geronimo. Después, ante nuestra exploración de los distintos reinos y configuraciones de seguridad, regresaremos y visitaremos nuevamente los temas que sean necesarios.

Para administrar usuarios y grupos vía la Consola de Administración Geronimo, el portlet Console Realm (Reino de Consola) esta disponible a mano izquierda en el menú Console Navigation _(Navegación de Consola)_. Ahí encontrarás dos portlets, uno para la administración de usuarios y otro para la administración de grupos, los cuales estan ilustrados en las figuras siguientes.

Para cambiar la contraseña (password) de un usuario, haz clic en el usuario dentro del portlet Console Realm Users (Consola del Reino de Usuarios), lo cual te proporcionará su UserID y Password, para que puedas actualizar dicho perfil.

Para agregar un nuevo usuario, haz clic en Create New User (Crear Nuevo Usuario), lo cual te solicitará un UserID y Password (esta última, en dos ocasiones); ingresa dichos valores y haz clic en Add (Agregar).

Para eliminar un usuario, haz clic en el Delete (Borrar) correspondiente, lo cual te solicitará una confirmación para el borrado de dicho usuario; se confirma con clic cn OK.

Al haber creado nuevos usuarios, puedes agregarlos a un grupo. Por defecto, el grupo admin esta disponible y el usuario system se encuentra en dicho grupo. Si haces clic en el grupo admin observarás al usuario system en la ventana a la derecha, mientras que cualquier otro usuario disponible se enlisatará en la ventana a la izquierda.

Para agregar un nuevo usuario a ese grupo, primero elige al usuario y después haz clic en Add >> (Agregar >>) y finalmente clic en Update (Actualizar).

Para crear un nuevo grupo haz clic en Create New Group (Crear Nuevo Grupo), este paso es muy similar al previo. Además de proporcionarte la opción de agregar usuarios al nuevo grupo, también deberás proporcionar el nombre del grupo. Cuando ingreses el nuevo nombre de grupo y agregues los usuarios, haz clic en Add (Agregar) para finalizar.

Los cambios que hiciste vía los portlets Console Realm Users y Console Realm Groups son reflejados en dos archivos distintos, los cuales son users.properties (usuarios.propiedades) y groups.properties (grupos.propiedades) respectivamente, y se localizan en el directorio <geronimo_home>\var\security.

Cuando elimines un usuario desde la consola, el usuario no será dado de baja del grupo al cual pertenezca. El portlet Console Realm Users no modificará los grupos.

De forma equivalente, es posible administrar a los usuarios y grupos mediante la modificación directa de los archivos citados:

users.properties
groups.properties

users.properties usa el formato <user_name>=<password>, groups.properties usa el formato <group_name>=<user_name>. Observa los ejemplos siguientes para detalles adicionales.

users.properties
usuario2=usuario2
usuario1=usuario1
system=manager

Como estamos utilizando la configuración básica, por defecto, de seguridad, observarás que los IDs y contraseñas se almacenan en texto plano. Con ello puedes agregar, eliminar y cambiar contraseñas desde dicho archivo.

groups.properties
admin=system
usuarios=usuario1,usuario2

Así como con usuarios, en groups.properties puedes agregar y eliminar grupos, así como agregar y eliminar usuarios en dichos grupos.

Los archivos mencionados en estas secciones junto con toda la configuración de seguridad, en adición a nombres de usuarios y sus contraseñas, son definidos en el reino de seguridad geronimo-properties-realm (reino-propiedades-geronimo), cubierto en la siguiente sección.

Regresar a la sección superior

Administrando reinos (realms) de seguridad

Antes de continuar, es recomendable que te familiarices con conceptos y arquitectura de seguridad de Geronimo. Visita la sección de Seguridad para detalles en como se implementa la seguridad en Geronimo. Los dos Conceptos de Seguridad principales sobre los cuales la arquitectura de seguridad Apache Geronimo esta construida, son el Login Domain (Dominio de Ingreso) y Security Realm (Reino de Seguridad); en esta sección nos enfocaremos en el último.

Para administrar reinos de seguridad vía la Consola de Administración Geronimo, el portlet Security Realms (Reinos de Seguridad) esta disponible en el menu de Concole Navigation _(Navegación de Consola)_ ubicado a mano izquierda. Este portlet te permite agregar un nuevo reino de seguridad ó editar uno existente. Para eliminar reinos, normalmente emplearías la opción de línea de comandos, con la Herramienta de activación (Deployer tool).

Enlistados en dicho portlet, encontrarás a todo reino de seguridad disponible. Por defecto, el reino de seguridad empleado por Geronimo para autenticar usuarios vía el archivo de propiedades, es geronimo-properties-realm (reino-propiedades-geronimo).

Cuando edites un reino existente (en este caso, geronimo-properties-realm), se te presentará la pantalla siguiente; nota que no serás capaz de cambiar el nombre del reino (realm name) ni el nombre acceso del dominio (login domain name).

El siguiente ejemplo ilustra el plan de activación (deployment plan) generado por este portlet.

geronimo-properties-realm
<configuration configId="SecurityRealm-geronimo-properties-realm" xmlns="http://geronimo.apache.org/xml/ns/deployment-1.0">
    <gbean name="geronimo-properties-realm" class="org.apache.geronimo.security.realm.GenericSecurityRealm">
        <attribute name="realmName">geronimo-properties-realm</attribute>
        <reference name="ServerInfo">
            <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-system/1.0/car,J2EEServer=geronimo,j2eeType=GBean,name=ServerInfo</gbean-name>
        </reference>
        <reference name="LoginService">
            <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-security/1.0/car,J2EEServer=geronimo,j2eeType=JaasLoginService,name=JaasLoginService</gbean-name>
        </reference>
        <xml-reference name="LoginModuleConfiguration">
            <log:login-config xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-1.0">
                <log:login-module control-flag="REQUIRED" server-side="true" wrap-principals="false">
                    <log:login-domain-name>geronimo-properties-realm</log:login-domain-name>
                    <log:login-module-class>org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule</log:login-module-class>
                    <log:option name="usersURI">var/security/users.properties</log:option>
                    <log:option name="groupsURI">var/security/groups.properties</log:option>
                </log:login-module>
            </log:login-config>
        </xml-reference>
    </gbean>
</configuration>

Como se mencionó previamente, este plan es para el reino de seguridad por defecto, basado en archivo de propiedades. Cuando creas un nuevo reino, tendrás que elegir de los siguientes tipos de reinos disponibles:

  • Certificate Properties File Realm (Reino de Archivo de Propiedades Certificadas)
  • Database (SQL) Realm (Reino de Base de datos (SQL))
  • LDAP Realm (Reino LDAP)
  • Properties File Realm (Reino de Archivo de Propiedades)
  • Other (Otro)

La última opcion disponible te permite crear tu propio tipo adaptado de reino, cuando ninguno de los disponibles cumple con las necesidades de tu ambiente.

Apache Geronimo tiene un reino de archivo de propiedades previamente configurado, el cual es el reino empleado por defecto para la autenticación. Geronimo también viene con un grupo de aplicaciones ejemplo; una de dichas aplicaciones proporciona un reino de seguridad adicional para LDAP. Para este ejemplo, nos enfocaremos en un tipo distinto, emplearemos una base de datos para la verificación y consulta de nombres de usuario y sus contraseñas.

Para este ejemplo creamos una nueva base de datos, llamada BaseDeDatosDeSeguridad, usando la base de datos Derby pre-construida. Los siguientes pasos resumen al procedimiento seguido para crear la base de datos y tablas, cargar algunos datos ejemplo y crear al pool de conexiones. Instrucciones detalladas en como definir pools de conexiones a base de datos son descritas en la sección Configurando pools de bases de datos.

Crear la base de datos y cargar datos ejemplo

  • A la izquierda, en el menú Console Navigation _(Navegación de Consola), haz clic en Database Manager _(Administrador de Base de datos).
  • Ingresa BaseDeDatosDeSeguridad en el campo Create DB: (Crear BD: ) y haz clic en Create (Crear).
  • Selecciona BaseDeDatosDeSeguridad del menú Use DB: (Usa BD: ) e ingresa los siguientes comandos, para después hacer clic en Run SQL (Ejecuta SQL).
    create table usuarios
    (nombreusuario varchar(15),
    password varchar(15));
    create table grupos
    (nombreusuario varchar(15),
    nombregrupo varchar(15));
    insert into usuarios values('usuariouno','p1');
    insert into usuarios values('usuariodos','p2');
    insert into usuarios values('usuariotres','p3');
    insert into grupos values('usuariouno','admin');
    insert into grupos values('usuariodos','admin');
    insert into grupos values('usuariotres','usuario');

Crear pool de conexiones

  • A la izquierda, en el menú de Console Navigation _(Navegación de Consola), haz clic en Database Pools _(Pools de Base de Datos).
  • Clic en Using the Geronimo database pool wizard (Usando al ayudante de Geronimo para pool de base de datos).
  • Ingresa BaseDeDatosDeSeguridad como nombre para el pool de base de datos. Selecciona Derby embedded (Derby embebida) desde el menú del tipo de pool de base de datos y haz clic en Next (Siguiente).
  • Verifica que la clase del controlador JDBC sea org.apache.derby.jdbc.EmbeddedDriver.
  • Desde el menú Driver Jar (Jar Controlador), selecciona org.apache.derby/derby/10.1.1.0/jar.
  • Deja en blanco al nombre de usuario y password.
  • Ingresa BaseDeDatosDeSeguridad como nombre de base de datos y haz clic en Next (Siguiente).
  • Hacer clic en Test Connection _(Probar Conexión)_.
  • Hacer clic en Deploy (Activar).

Agrega un nuevo reino de seguridad

Para crear un nuevo reino de seguridad, haz clic en Add new security realm (Agregar nuevo reino de seguridad) desde el portlet Security Realms (Reinos de Seguridad).

Ingresa reino_de_seguridad_derby en el campo Name of Security Realm: (Nombre del Reino de Seguridad: ) y selecciona Database (SQL) Realm (Reino (SQL) Base de datos) del menú Realm type: (Tipo de Reino: ) y haz clic en Next (Siguiente).

La siguiente pantalla configura al módulo de acceso (login). Los primeros dos campos que necesitarás llenar, variarán potencialmente de acuerdo al tupo de base de datos. En este caso, estamos usando la base de datos Derby embebida, por lo que los select SQL de User y Group deberían leerse como sigue:

User SELECT SQL: select nombreusuario, password from APP.usuarios where nombreusuario=?
Group SELECT SQL: select nombreusuario, nombregrupo from APP.grupos where nombreusuario=?

Nota que APP es el esquema por defecto para la base de datos Derby embebida, y requiere preceder a la tabla en el enunciado SQL. Estos enunciados tienden a ser distintos de una base de datos a otra; por ejemplo, este procedimiento también fue probado con DB2, donde los enunciados SQL empleados fueron:

User SELECT SQL: select nombreusuario, password from usuarios where nombreusuario=?
Group SELECT SQL: select nombreusuario, nombregrupo from grupos where nombreusuario=?

Al haber ingresado los enunciados SQL para la obtención de usuarios y grupos, necesitas elegir del menú Database Pool (Pool de Base de datos) al pool de conexiones a la base de datos que creaste en el paso previo (Crear pool de conexiones), para después hacer clic en Next (Siguiente).

No es necesario llenar los campos restantes, porque esa información ya ha sido proporcionada por el pool de conexiones a la base de datos. Si no estas empleando pools de conexiones a base de datos predefinidos, necesitarás proporcionar todos los campos faltantes.

El paso siguiente te permitirá el activar auditoría (auditing) para monitorear los intentos de acceso mediante este reino. En este paso también puedes configurar el bloqueo de cuentas, basándose en la cantidad de intentos de acceso fallidos dentro de un margen de tiempo específico. La última opción en este paso, Store Password (Guardar Password), cuando esta habilitada permitirá al reino el guardar la password de usuario en una credencial privada en el Subject.

En este punto ya haz configurado al nuevo reino de seguridad; el siguiente paso es para probarlo y después activarlo. Haz clic en Test a Login (Probar un Acceso).

Ingresa un nombre y contraseña válidos para obtenerlos de la base de datos y haz clic en Next (Siguiente).

Deberías recibir un mensaje de confirmación indicando que el acceso fue exitoso; haz clic en Deploy Realm (Activar Reino) para cargar esta configuración al servidor.

Ahora tienes un nuevo, completamente configurado, reino de seguridad que comprueba nombre de usuarios y contraseñas desde la base de datos Derby incluida.

El siguiente ejemplo muestra al plan de activación (deployment plan) para este reino de seguridad. Como alternativa a la Consola de Administración Geronimo, puedes guardar este ejemplo en un archivo (por ej. reino_de_seguridad.xml) y activarlo mediante la Herramienta de activación, con la ejecución del siguiente comando:

<geronimo_home>\bin\deploy --user system --password manager deploy <realm_path>\reino_de_seguridad_derby.xml

derby_security_realm
<configuration configId="SecurityRealm-reino_de_seguridad_derby" xmlns="http://geronimo.apache.org/xml/ns/deployment-1.0">
    <import>
        <uri>user/database-pool-BaseDeDatosDeSeguridad/1/car</uri>
    </import>
    <gbean name="reino_de_seguridad_derby" class="org.apache.geronimo.security.realm.GenericSecurityRealm">
        <attribute name="realmName">reino_de_seguridad_derby</attribute>
        <reference name="ServerInfo">
            <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-system/1.0/car,J2EEServer=geronimo,j2eeType=GBean,name=ServerInfo</gbean-name>
        </reference>
        <reference name="LoginService">
            <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-security/1.0/car,J2EEServer=geronimo,j2eeType=JaasLoginService,name=JaasLoginService</gbean-name>
        </reference>
        <xml-reference name="LoginModuleConfiguration">
            <log:login-config xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-1.0">
                <log:login-module control-flag="REQUIRED" server-side="true" wrap-principals="false">
                    <log:login-domain-name>reino_de_seguridad_derby</log:login-domain-name>
                    <log:login-module-class>org.apache.geronimo.security.realm.providers.SQLLoginModule</log:login-module-class>
                    <log:option name="userSelect">select nombreusuario, password from APP.usuarios where nombreusuario=?</log:option>
                    <log:option name="dataSourceApplication">null</log:option>
                    <log:option name="groupSelect">select nombreusuario, nombregrupo from APP.grupos where nombreusuario=?</log:option>
                    <log:option name="dataSourceName">BaseDeDatosDeSeguridad</log:option>
                </log:login-module>
                <log:login-module control-flag="OPTIONAL" server-side="true" wrap-principals="false">
                    <log:login-domain-name>reino_de_seguridad_derby-Audit</log:login-domain-name>
                    <log:login-module-class>org.apache.geronimo.security.realm.providers.FileAuditLoginModule</log:login-module-class>
                    <log:option name="file">var/log/reinoSeguridadDerby.log</log:option>
                </log:login-module>
                <log:login-module control-flag="REQUISITE" server-side="true" wrap-principals="false">
                    <log:login-domain-name>reino_de_seguridad_derby-Lockout</log:login-domain-name>
                    <log:login-module-class>org.apache.geronimo.security.realm.providers.RepeatedFailureLockoutLoginModule</log:login-module-class>
                    <log:option name="lockoutDurationSecs">60</log:option>
                    <log:option name="failurePeriodSecs">10</log:option>
                    <log:option name="failureCount">3</log:option>
                </log:login-module>
            </log:login-config>
        </xml-reference>
    </gbean>
</configuration>

Probando el reino de seguridad

Si deseas probar rápidamente este reino, puedes emplear la aplicación LDAP ejemplo cubierta en la sección Configurando LDAP. Sólo necesitarás cambiar su descriptor de activación deployment descriptor geronimo-web.xml por el que se muestra a continuación, para después reempacar la aplicación y activarla.

Nota que sólo cambiamos del plan original, el nombre del reino, de ldap-realm a reino_de_seguridad_derby.

geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://geronimo.apache.org/xml/ns/web"
    xmlns:sec="http://geronimo.apache.org/xml/ns/security"
    configId="org/apache/geronimo/ldap-secure-demo">
    <context-root>/ldap-demo</context-root>
    <context-priority-classloader>false</context-priority-classloader>
<!--    <security-realm-name>ldap-realm</security-realm-name> -->
	<security-realm-name>reino_de_seguridad_derby</security-realm-name>
    <security>
        <default-principal realm-name="derby_security_realm">
            <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="system"/>
        </default-principal>
        <role-mappings>
            <role role-name="content-administrator">
                <realm realm-name="derby_security_realm">
                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" name="admin" designated-run-as="true"/>
                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="system"/>
                </realm>
            </role>
            <role role-name="guest">
                <realm realm-name="derby_security_realm">
                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" name="guest" designated-run-as="true"/>
                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="user1"/>
                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="user2"/>
                </realm>
            </role>
        </role-mappings>
    </security>
</web-app>

Sigue las instrucciones citadas en la sección Configurando LDAP para reempacar y activar la aplicación. Cuando la pruebes, estarás empleando al reino SQL de la base de datos. Verifícalo unos minutos, con lo que deberías obtener intentos exitosos de acceso almacenados en el archivo de bitácora que especificaste cuando creaste a este reino de seguridad (en este ejemplo var/log/reinoSeguridadDerby.log).

reinoSeguridadDerby.log
03/01/2006 15:56:33 - Authentication attempt - usuariouno
03/01/2006 15:56:33 - Authentication succeeded - usuariouno
03/01/2006 16:10:05 - Authentication attempt - usuariodos
03/01/2006 16:10:05 - Authentication succeeded - usuariodos

Regresar a la sección superior

Administrando certificados

Para administrar certificados SSL, el portlet Keystore Configuration _(Configuración Keystore)_ esta disponible al elegir Keystore en el menú de la Console Navigation _(Navegación de Console)_, ubicado a mano izquierda. Desde dicho portlet puedes importar algún certificado existente ó crear uno nuevo.

Los certificados en Geronimo son almacenados en un keystore ubicado en <geronimo_home>\var\security\ssl-keystore-1. Dicho archivo keystore ssl no existe hasta que crees la primer llave privada.

Si ya cuentas con un certificado, puedes hacer clic en import trusted certificate (importar certificado confiable).

Especifica la ubicación del archivo del certificado y haz clic en View Certificate (Ver Certificado). La información del certificado será desplegada, y deberías agregar un alias para identificar dicho certificado; posteriormente, da clic en Import (Importar) para agregarlo al keystore. Ahora deberías ver que el tamaño de keystore ha incrementado.

Para generar una llave, da clic en generate key pair (generar par de llave). En la siguiente pantalla ingresa la información relevante y da clic en Submit (Enviar). Para este ejemplo, ingresamos los siguientes valores:

Alias: Servidor Geronimo
Key Algorithm: RSA
Key Size: 1024
Signature Algorithm: MD5withRSA
Validity: 2000
Common Name (CN): 127.0.0.1
Organizational Unit (OU): Geronimo
Organizational Name (O): Apache
Locality (L): Localidad
State (ST): Estado
Country (C): País

Ahora deberías ver que el tamaño de keystore ha incrementado y que la llave privada que generaste se encuentra listada cerca de la parte inferior del portlet Keystore Configuration _(Configuración de Keystore). Da clic en view _(ver) de la llave privada que creaste; deberías ver los detalles del par de llave y las opciones para generar una petición de certificado y para importar una respuesta de certificado de una autoridad de certificación (CA).

Para generar una petición de certificado a enviar a la CA, da clic en generate CSR (generar CSR), copia el contenido generado y envíalo a la CA (normalmente recibirías las instrucciones de la CA en el cómo enviar el CSR).

Al recibir la respuesta de la CA, comúnmente se acompaña de un archivo certificado; para agregar ese certificado al keystore sigue los pasos mencionados para import trusted certificate (importar certificado confiable).

Usando los certificados

Actualmente se conoce un tema ante el uso de certificados para asegurar nuevos oyentes HTTPS; ya existe un parche disponible y debería ser aplicado a la siguiente versión de Apache Geronimo. Consulta JIRA GERONIMO-1503 para mayor detalle.

Para usar tus propios certificados en lugar de los proporcionados por defecto en la instalación, necesitas crear un nuevo oyente HTTPS. Usa al portlet Network Listener (Oyente de Red) ubicado dentro de la opción Web Server (Servidor Web) en el menú de Console Navigation _(Navegación de Consola)_ a mano izquierda. Los pasos para agregar al nuevo oyente HTTPS fueron cubiertos previamente en la sección Agregar nuevo oyente (listener) HTTPS.

Regresar a la sección superior