Como dijéramos en el anterior post >, indagaremos en los CLI deployment archives como una alternativa a definir las fuentes de datos, resource adapters y colas de mensajes dentro de un EAR (lo cual JBoss 7 ya no soporta) para dar cohesión a una app hecha de múltiples componentes.

CLI

CLI significa Command Line Interface >> y es una consola de comandos a la cual se accede en $JBOSS_7/bin/jboss-cli.sh (y no jboss-admin.sh, como dice el link). El servidor tiene que estar corriendo y podemos conectarnos – por defecto a localhost:9999 – con connect y ver los comandos disponibles con help –commands

[disconnected /] connect
[standalone@localhost:9999 /] help --commands
Commands available in the current context:
batch                cd                   clear                command              connect              connection-factory   data-source
deploy               deployment-info      echo-dmr             help                 history              jms-queue            jms-topic
ls                   pwd                  quit                 read-attribute       read-operation       undeploy             version
xa-data-source
To read a description of a specific command execute 'command_name --help'.

Existen comandos y operaciones. Los primeros son, por así decirlo, simplificaciones user-friendly de los segundos. Con las operaciones se puede hacer casi todo…

Archivos de deploy CLI

La idea es generar un archivo de tipo CLI >> (que es una forma de JAR) que incluye todas las librerías requeridas para el proyecto, así como dos archivos con instrucciones de deploy (deploy.scr) y undeploy (undeploy.scr).

Para ésto, creamos una carpeta en donde dejamos nuestro WAR, el RAR de la cola de mensajes (el cual trae adentro las instrucciones de configuración, como vimos previamente >>) – éste debe ir empaquetado y no como carpeta, el JAR conector a la base de datos y los dos mentados archivos de instrucciones

\-
 |--META-INF
    |--MANIFEST.MF
 |--miApp.war
 |--activemq-rar-5.6.0.rar
 |--jtds-1.2.6.jar
 |--deploy.scr
 |--undeploy.scr

Luego nos situamos en esta carpeta y ejecutamos

jar cf test.cli *

para empaquetarlo.
(La carpeta META-INF/ no debemos proveerla, sino que se crea al empaquetar con el comando jar, y de hecho dudo de que se esté utilizando)

Nota respecto al JTDS

Nótese que como el conector de Microsoft SQL Server  jtds-1.2.6.jar no respeta la convención JDBC 4, si intentamos instalarlo tan sólo deployándolo se cae con

Failed to execute archive script: {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => "JBAS014654: Composite operation was rolled back","Operation step-3" => {"JBAS014771:
Services with missing/unavailable dependencies" => ["jboss.driver-demander.java:jboss/datasources/miDS is missing [jboss.jdbc-driver.applications/jtds-1_2_6_jar]"]}}}
[standalone@localhost:9999 /] data-source add --help

por lo que, dado que aparentemente no es trivial hacer la configuración de un módulo vía CLI, le aplicaremos el siguiente hack >> que consiste en crear un archivo META-INF/services/java.sql.Driver en el JAR, cuyo contenido es una única línea con el nombre de la implementación de esa interfaz

net.sourceforge.jtds.jdbc.Driver

Ésto se hace creando en cualquier parte una carpeta META-INF/services, poniéndole adentro el susodicho archivo, dejándola al lado del JAR y ejecutando el siguiente update para que la carpeta sea empaquetada dentro del JAR

jar -uf jtds-1.2.6.jar META-INF/services/java.sql.Driver

deploy

Entonces, volviendo a lo nuestro, el archivo deploy.scr va a ser algo así

/subsystem=resource-adapters/resource-adapter=activemq-rar-5.6.0.rar:add(archive=activemq-rar-5.6.0.rar)
deploy jtds-1.2.6.jar
data-source add --name=miDS --connection-url=jdbc:jtds:sqlserver://server:1433/miDB;loginTimeout=30 --jndi-name=java:jboss/datasources/mi --driver-name=jtds-1.2.6.jar --driver-class=net.sourceforge.jtds.jdbc.Driver
deploy miApp.war

Leyéndolo línea a línea lo que instruímos es a

  • Deployar el RAR como Resource Adapter – no sirve usar el comando deploy en este caso porque no lo reconoce como RAR como cuando lo dejamos en la carpeta deployers/ sino que hay que especificárselo >>.
  • Deployar el conector a MSSQL.
  • Crear el data-source de  nuestra app usando el conector ya creado.
  • Deployar el WAR de la aplicación, finalmente.

Con ésto, desde la consola CLI ya podemos ejecutar

[standalone@localhost:9999 /] deploy ~/ruta/a/archivo/test.cli

y debiera tener un output como éste

#1 /subsystem=resource-adapters/resource-adapter=activemq-rar-5.6.0.rar:add(archive=activemq-rar-5.6.0.rar)
#2 deploy jtds-1.2.6.jar
#3 data-source add --name=miDS --connection-url=jdbc:jtds:sqlserver://server:1433/miDB;loginTimeout=30 --jndi-name=java:jboss/datasources/miDS --driver-name=jtds-1.2.6.jar --driver-class=net.sourceforge.jtds.jdbc.Driver
#4 deploy miApp.war

pero los resource-adapters no funcan, ver >>

Este sitio utiliza cookies.    Leer más