sábado, agosto 11, 2012

Como configurar Datasource JBoss 7

En JBoss 7 la configuracion del Datasource es algo diferente a las versiones anteriores.

En este ejemplo lo haremos con postgres pero es analogo a mysql

1.  Nos ubicamos en la carpeta del servidor en este caso jboss-as-7.1.1.Final.
     Luego entramos en module y encontraremos carpetas de raiz com, org, etc.
     Para el caso de postgresql entraremos en org y creamos una carpeta postgresql dentro de esta creamos otra que se llama main.

Para PostgreSQL debe quedarnos asi:
 jboss-as-7.1.1.Final/modules/org/postgresql/main/
Para MySQL asi:
 jboss-as-7.1.1.Final/modules/com/mysql/main/

2. Descargamos el conector respectivo y lo pegamos en la carpeta main que creamos anteriormente.

Para postgres la version a la fecha es: postgresql-9.1-902.jdbc4.jar.

Para MySQL: descargamos el comprimido mysql-connector-java-5.1.21.zip lo descomprimimos y copiamos el archivo mysql-connector-java-5.1.21-bin.jar en la carpeta main.

3. En la misma ruta creamos el archivo module.xml

Pegamos el siguiente contenido para PostgreSQL

<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
    <resources>
        <resource-root path="postgresql-9.1-902.jdbc4.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>


Para MySQL:

<module xmlns=”urn:jboss:module:1.1″ name=”com.mysql“><resources>
<resource-root path=”mysql-connector-java-5.1.19-bin.jar”/>
</resources>
<dependencies>
<module name=”javax.api”/>
<module name=”javax.transaction.api”/>
<module name=”javax.servlet.api” optional=”true”/>
</dependencies>
</module>

4. Dentro del archivo standalone.xml o domain.xml en cualquiera de los dos, Agregar las siguientes lineas.

a)

Para PostgreSQL:

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


Debemos buscar el tag drivers y degamos el codigo anterior encontrarmos un codigo de ejemplo en dicho archivo dice driver name="h2" podemos buscar este ejemplo y poner nuestro codigo anterior.

Para MySQL es:


<driver name=”mysql” module=”com.mysql“>
 <xa-datasource-class>com.mysql.jdbc.Driver
</xa-datasource-class>
</driver>

b)

Ahora pondremos el codigo para datasourse que este es el que haremos referencia por medio del contexto de la aplicacion. En otras palabras al que llamaremos cuando necesitamos conectarnos.

Esto debemos pegar dentro del tag datasources esta en plural no lo olviden. Al final pondre como queda el codigo entro del archivo standalone.xml

Para PostgreSQL:

<datasource jndi-name="java:jboss/datasources/ejemploDS" pool-name="ejemploDS" 
   enabled="true" jta="true" use-java-context="true" use-ccm="true">
 <connection-url>jdbc:postgresql://localhost:5432/base
 </connection-url>
   <driver>org.postgresql</driver>
     <security>
    <user-name>postgres</user-name>
    <password>pass</password>
     </security>
</datasource>

Para MySQL:

<datasource jndi-name=”java:jboss/datasources/myds” pool-name=”myds” enabled=”true” 
use-java-context=”true”>
<connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>mypassword</password>
</security>
</datasource>

Al final el tag datasources debe quedar asi:

<!-- tag datasources -->
<datasources>

  <!-- datasource de ejemplo -->
  <datasource jndi-name="java:jboss/datasources/ExampleDS" 
        pool-name="ExampleDS" enabled="true" 
        use-java-context="true">
    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
    </connection-url>
    <driver>h2</driver>
    <security>
      <user-name>sa</user-name>
      <password>sa</password>
    </security>
  </datasource>

  <!-- tag drivers -->
  <drivers>

    <!--ejemplo de driver -->
    <driver name="h2" module="com.h2database.h2">
      <xa-datasource-class>org.h2.jdbcx.JdbcDataSource
      </xa-datasource-class>
    </driver>

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

  </drivers>
  <!-- fin tag drivers -->

  <!-- nuestro tag datasource -->
  <datasource jndi-name="java:jboss/datasources/ejemploDS" 
     pool-name="ejemploDS" enabled="true" 
     jta="true" use-java-context="true" 
     use-ccm="true">
    <connection-url>jdbc:postgresql://localhost:5432/base
    </connection-url>
    <driver>org.postgresql</driver>
      <security>
        <user-name>postgres</user-name>
        <password></password>
      </security>
   </datasource>

</datasources>
<!-- fin tag datasources -->

Ya hemos configurado el datasource para nuestra conexion.

Para llamar del persistence.xml

<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/ejemploDS</jta-data-source>

Ese es todo. dejen sus comentarios o inquietudes.


Fuentes:

http://www.mastertheboss.com/jboss-datasource/how-to-configure-a-datasource-with-jboss-7

http://vkslabs.com/adding-mysql-data-store-to-jboss-7-x/

http://kousikraj.wordpress.com/2011/11/25/datasource-configuration-setup-for-jboss-as-7-with-example-of-postgresql/



Hasta la proxima

www.corvustec.com/

4 comentarios:

Anónimo dijo...

para que tanta mierda si eso se puede hacer directo desde del profile del jboss,,y el conector lo pegas en el standalone --deplyments(el comprimido) y listo

Unknown dijo...

Si tienes otra alternativa que bien espero que la publiques y compartas dicho enlace.

Anónimo dijo...

Super bie ojala el anonimo mande la otra opcion te felicito!!

Unknown dijo...

Gracias...!!!