domingo, 3 de noviembre de 2013

Configurar JBoss, Postgresql

Para poder acceder a una base de datos desde un datasource publicado en Jboss se deben realizar básicamente 3 pasos.

Creación modulo

Para relacionar el driver de conexión de PostgresSQL se debe crear un modulo en nuestra instalación de Jboss, para esto se debe crear un archivo module.xml en la ruta <directorio base del Jboss>\org\postgresql\main, si alguno de los directorios de la ruta no existe se debe crear, el archivo xml contiene una descripción del driver de la base de datos y las dependencias del mismo. por ejemplo:

<?xml version="1.0" encoding="UTF-8"?> 
    <module xmlns="urn:jboss:module:1.0" name="org.postgresql"> 
     <resources> 
        <resource-root path="postgresqlJdbc4.jar"/> 
     </resources> 
     <dependencies> 
        <module name="javax.api"/> 
        <module name="javax.transaction.api"/> 
     </dependencies> 
    </module> 


Donde el path es el nombre del jar jdbc de PostgresSQL el cual se debe almacenar en el mismo directorio del archivo xml, se puede descargar el jdbc desde aquí.

Cuando agreguemos el modulo podemos iniciar nuestro Jboss y verificar que todos los módulos estén cargando correctamente.

NOTA: Se debe tener en cuenta que el archivo xml no debe tener espacios en blanco al inicio, sino habrá un error al cargar el modulo.

Incluir driver

Una vez creado el modulo debemos incluirlo en la configuración del Jboss, para eso editamos el archivo standalone.xml ubicado en <directorio base del Jboss>\standalone\configuration. Buscamos la etiqueta  <datasources> y dentro de esta la etiqueta <drivers> por defecto Jboss tiene un driver configurado, agregamos uno nuevo:

<driver name="postgresql" module="org.postgresql">
                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class></driver>


Incluir datasource

Para incluir el datasource solo debemos agregar al grupo de datasources del standalone.xml lo siguiente:

<datasource jndi-name="java:jboss/datasources/nombreDS" pool-name="mangaadminDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:postgresql://host:puerto/database</connection-url>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>username</user-name>
                        <password>password</password>
                    </security>

</datasource>

Luego de esto podemos acceder al datasource del Jboss que quedara publicado como:

java:jboss/datasources/nombreDS