Visitas: 319  
Tiempo total: 6 días con 11:12:24 hrs  

Esta publicación explica la forma correcta de lograr la conexión hacia el servidor SQL Server, usando el driver sqljdbc4-2.0.jar instalado como modulo en JBoss y lograr su consumo desde Eclipse, logrando crear una aplicación JAVA EE que gestione conexiones SQL Server.

Configuración JBoss

La conexión de Eclipse con SQL Server utilizando JBoss y Spring MVC es bastante compleja, o confusa debido a la documentación de JBoss. El controlador que se debe de utilizar para gestionar la conexión es sqljdbc4-2.0.jar.zip, este controlador se debe de instalar como un modulo del servidor JBoss. No se puede utilizar como una librería en Eclipse o bien como una dependencia Maven porque JBoss no puede incluir su código en el proyecto al igual que el controlador de PostgreSQL.

Este problema se soluciona agregando la librería .jar de la conexión al servidor JBoss como un modulo. Para la instalación de este controlador en JBoss, se realiza lo siguiente:

• Crear las carpetas {JBOSS_HOME}\modules\com\microsoft\sqlserver\jdbc\main
• Aquí, colocar el archivo sqljdbc4-2.0.jar y crear el documento module.xml
• En el archivo module.xml, colocar el siguiente texto:

<?xml version=”1.0″ encoding=”UTF-8″?>
<module name=”com.microsoft.sqlserver.jdbc” xmlns=”urn:jboss:module:1.0″>
    <resources>
        <resource-root path=”sqljdbc4-2.0.jar”/>
     </resources>
     <dependencies>
        <module name=”javax.api”/>
        <module name=”javax.transaction.api”/>
        <module name=”javax.servlet.api” optional=”true”/>
     </dependencies>
</module>

• A continuación, reiniciar el servidor y agregar el controlador al archivo de configuración del servidor standalone.xml, este archivo es el que contiene los parámetros de configuración que el servidor JBoss utiliza, en este caso para standalone. El comando que agrega este controlador a la configuración de JBoss es el siguiente:

/subsystem=datasources/jdbc-driver=sqljdbc:add(driver-name=”sqljdbc”,driver-module-name=”com.microsoft.sqlserver.jdbc”,driver-xa-datasource-class-name=”com.microsoft.sqlserver.jdbc.SQLServerDriver”)

El comando lo ingresamos en la consola que nos abre el archivo jconsole.bat (jconsole.sh), escribiendo connect teniendo el servidor corriendo y luego escribimos el código anterior. Con esto lo que se logra es registrar el modulo que utilizaremos en la aplicación de Eclipse.

Configuración en Eclipse

El documento del proyecto spring MVC de la conexión a la base de datos se llamaba spring-quickstart-ds.xml, el cual manejaba el conjunto de conexiones kitchensink-quickstart. Para esta publicación inicie desde cero y cree una nueva conexión, en main, webapp, WEB-INF damos clic derecho y seleccionamos New, Other, JBoss Tools, JBoss DataSource (-ds.xml).

SQL Server - Jboss - Eclipse - Module

Nos aparece un cuadro de dialogo para crear la conexión, ingresamos los parámetros necesarios hasta que seleccionemos Test Connection y nos salga el mensaje Ping succeeded, es decir que funciona correctamente la conexión a la base de datos.

Una vez esto se generara el archivo XML llamado NEW_NOMBRE-ds.xml y junto a este el archivo .jar del controlador que seleccionamos durante la creación de la conexión, este lo podemos eliminar dado que no funciona con JBoss debido a que es software de terceros, o bien por ser desarrollados por empresas que no siguen los estándares o realizan versiones para cada tipo o grupos de desarrolladores.

SQL Server - Jboss - Eclipse - Module - 2

Esta nueva conexión tiene el parámetro pool-name que es el nombre del conjunto de conexiones que se va a utilizar, este lo debemos de reemplazar por el del ejemplo inicial que es kitchensink-quickstart, en los siguientes archivos:

persistence.xml
infraestructure.xml

El archivo infraestructure.xml debe de quedar con el nuevo código generado al seleccionar la opción register in persistence.xml cuando creamos el archivo de conexión NEW_NOMBRE-ds.xml, en mi caso para tener el archivo persistence.xml limpio elimine todo su código antes de generar el archivo NEW_NOMBRE-ds.xml, pero para que todo funcione correctamente con Hibernate hay agregar las siguientes líneas dentro del tag <properties> <!– Properties for Hibernate –> … </properties> del documento persistence.xml:

<property name=”jboss.entity.manager.factory.jndi.name” value=”java:jboss/{parametro pool-name}/persistence” />
<property name=”hibernate.hbm2ddl.auto” value=”update” />

El document NEW_NOBRE-ds.xml cuya conexión debería ser similar a la siguiente:

<connection-url>jdbc:sqlserver://IP:PUERTO;databaseName=Nombre_BASE_DATOS</connection-url>
<driver>sqljdbc</driver>

Observamos el controlador sqljdbc, este controlador es el que registramos en el servidor JBoss, pero no hemos agregado dichas dependencias, esto se hace en el archivo jboss-deployment-structure.xml y agregamos la siguiente línea:

<module name=”com.microsoft.sqlserver.jdbc”/>

En este caso podemos eliminar el modulo ejemplo com.h2database.h2 de las conexiones kitchensink-quickstart por que no lo utilizaremos mas.

Final

Con estas instrucciones se logra la conexión al servidor SQL Server desde JBoss con Eclipse.

0