Desplegar mediante la Línea de Comandos de JBoss EAP

Aunque actualmente a la mayoría de nosotros nos gusta desplegar las aplicaciones desde Eclipse, hoy vamos a ver una forma alternativa de hacerlo. Debemos recordar que, en realidad, JBoss EAP no tiene nada que ver con Eclipse y que, por tanto, tiene su propia forma nativa de desplegar aplicaciones. Esto nos vendrá muy bien cuando, por ejemplo, tengamos que preparar scripts que sirvan para arrancar y desplegar sistemas de forma automática. Recordad que hablamos de uno de los servidores de aplicaciones más empleados hoy en día, así que es muy recomendable maximizar nuestro conocimiento al respecto.

 


Como ya vimos en el pasado, el arranque y despliegue de JBoss EAP puede realizarse de dos maneras: mediante la línea de comandos o mediante la consola de administración. La segunda forma es más visual y cómoda, mientras que el primer método brilla por su rapidez. Usar cualquiera de ellos dependerá únicamente de nuestros gustos y preferencias. Hoy vamos a centrarnos en la línea de comandos, aunque seguramente en el futuro os contaré cómo podemos arrancar desde la consola de administración. Cuantas más formas aprendamos de trabajar con JBoss EAP, pues más facilidades tendremos a la hora de desenvolvernos en nuestro proyecto.


Desplegar mediante la línea de comandos de JBoss EAP 


Para mostrar el despliegue mediante línea de comandos, vamos a trabajar con el fichero ".war" de una aplicación "helloworld" que lo único que hará será mostrar "Hello World" por pantalla. Ya sabemos que JBoss EAP nos permite desplegar mediante las clases compiladas o directamente mediante el ".war", así que para el ejemplo de hoy creo que quedará más claro usando el fichero construido. Y por supuesto, debemos tener instalado JBoss EAP en nuestra máquina Windows o Linux. 

La estructura de nuestro JBoss EAP será algo así:


1º) En primer lugar, tendremos que acceder a la carpeta "\bin" de nuestra instalación, donde tendremos todos los scripts disponibles para trabajar con el servidor.


 2º) A continuación, ejecutamos el comando "standalone.bat" para arrancar el servidor (el arranque se realizará con la configuración que tengamos establecida en el fichero standalone.xml). En este ejemplo estamos usando un máquina Windows, pero también podríamos hacer lo mismo desde una máquina Linux lanzando el script de arranque "standalone.sh".

 

3º) Si todo va bien, el servidor JBoss EAP habrá quedado arrancado. Para confirmar que todo ha ido correcto, tenemos que buscar esto al final del log de salida.

 

10:13:23,455 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-2) JBWEB003000: Coyote HTTP/1.1 starting on: http-/127.0.0.1:9280
10:13:23,549 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) JBAS010400: Fuente de datos enlazados [java:jboss/datasources/ExampleDS]
10:13:23,626 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Interfaz de administraci¾n http escuchando en http://127.0.0.1:10190/management
10:13:23,627 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Consola de administraci¾n escuchando en http://127.0.0.1:10190
10:13:23,627 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.4.6.GA (AS 7.5.6.Final-redhat-2) inici¾ en 2508ms - Inici¾ 153 de 191 servicios (57 servicios son perezosos, pasivos o por demanda)


4º) Para publicar una nueva aplicación, uno de los métodos disponibles consiste en llevar el fichero ".war" a la carpeta "\standalone\deployments" de la instalación de JBoss EAP. En nuestro ejemplo, copiamos el fichero "helloworld.war" a dicha carpeta.


5º) A continuación, en la línea de comandos observaremos como JBoss EAP, de forma automática, procede a desplegar la nueva aplicación.

 

Recordad que el modo de despliegue (automático o manual) se indica, una vez más, en el fichero standalone.xml. Tendremos que buscar una línea tal como la siguiente:

 

<deployment-scanner scan-interval="5000"
    relative-to="jboss.server.base.dir"
    path="deployments"
    auto-deploy-zipped="true"
    auto-deploy-exploded="false"/>

 

El tag "auto-deploy-expoded" hace referencia al método de despliegue utilizado para las carpetas con clases compiladas y el tag "auto-deploy-zipped" hace referencia a la forma de publicación empleada para los ficheros ".jar" , ".war" o ".ear".

 

6º) Tras el despliegue anterior, nuestra aplicación "helloworld" ya debería quedar correctamente publicada y disponible para su utilización. En el log de salida del servidor deberíamos ver algo como lo siguiente.

 

10:26:55,262 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015876: Iniciando la implementaci¾n de helloworld.war" (runtime-name: "helloworld.war")
10:26:55,568 INFO  [org.jboss.weld.deployer] (MSC service thread 1-8) JBAS016002: Procesamiento de implementaci¾n de soldadura helloworld.war
10:26:55,628 INFO  [org.jboss.weld.deployer] (MSC service thread 1-2) JBAS016005: Iniciando servicios para implementaci¾n CDI: helloworld.war
10:26:55,671 INFO  [org.jboss.weld.Version] (MSC service thread 1-2) WELD-000900 1.1.31 (redhat)
10:26:55,696 INFO  [org.jboss.weld.deployer] (MSC service thread 1-7) JBAS016008: Iniciando servicio de soldadura para implementaci¾n helloworld.war
10:26:55,902 INFO  [org.jboss.web] (ServerService Thread Pool -- 55) JBAS018210: Registrar el contexto web: /helloworld
10:26:56,000 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015859: Implementado "helloworld.war" (runtime-name : "helloworld.war")


7º) Si ahora volvemos a la instalación de JBoss y nos situamos de nuevo en la carpeta "\standalone\deployments", veremos que su contenido ha cambiado. Ahora nos aparecerá un nuevo fichero con la nomenclatura "helloworld.war.deployed". Si la denominación acaba en ".deployed" significa que nuestro despliegue ha finalizado correctamente. En caso contrario, dicho fichero nos aparecerá con la terminación ".failed".


Los estados posibles de este fichero serían los siguientes:

  • .pending 
  • .undeployed
  • .dodeploy
  • .isdeploying
  • .deployed
  • .failed


8º) Tras el despliegue, ahora ya podríamos ejecutar nuestra aplicación. Para ello, nos vamos al navegador e indicamos la url junto con el puerto en el que arrancó JBoss (como se aprecia en el log anterior, en este ejemplo el puerto utilizado es el 9280).

http://localhost:9280/helloworld/HelloWorld

En el navegador nos debería aparecernos algo como esto:

 

Como vemos, JBoss EAP ha sido capaz de desplegar la aplicación sin problemas adicionales y ha publicado su acceso en el puerto predefinido.


Command Line Interface (CLI) de JBoss EAP


Adicionalmente, os comento que en JBoss EAP para lanzar comandos también disponemos de un terminal nativo denominado Command Line Interface (Interfaz de Línea de Comandos). Dichos comandos nos permiten ejecutar ciertas operaciones con JBoss EAP, como por ejemplo la siguiente operativa: arrancar, parar, desplegar, deshacer despliegues o consultar publicaciones del servidor. Para acceder al terminal CLI (Command Line Interface) de JBoss EAP, tenemos que volver a trabajar con la instalación local de nuestro servidor.

Seguimos los siguientes pasos:


1º) Tendremos que acceder a la carpeta "\bin" de nuestra instalación donde, según hemos comentado antes, tenemos todos los scripts disponibles para el servidor.


2º) Desde el shell de Windows lanzamos el comando "jboss-cli.bat", lo que hará que inmediatamente entremos en el terminal CLI de JBoss EAP. En el caso de un máquina Linux, tendríamos un script equivalente denominado "jboss-cli.sh".


2º) A continuación, desde el terminal nos conectamos a la instancia de JBoss EAP que tenemos actualmente arrancada. Lo hacemos mediante el siguiente comando.

connect 127.0.0.1:10199

Nos aparecerá lo siguiente.


3º) Desde este terminal tendremos una serie de comandos disponibles para trabajar con el servidor. Podemos pedir la ayuda para ver los comandos habilitados.

help --commands

Nos aparecerá el listado siguiente:

 

[standalone@127.0.0.1:10199 /] help --commands
Commands available in the current context:
batch               connect             deployment-overlay  history             module              read-attribute      shutdown            xa-data-source
cd                  data-source         echo                if                  patch               read-operation      try
clear               deploy              echo-dmr            jdbc-driver-info    pwd                 reload              undeploy
command             deployment-info     help                ls                  quit                run-batch           version
To read a description of a specific command execute 'command_name --help'.


4º) Podemos ver la información sobre las aplicaciones actualmente desplegadas en el servidor. Para ello, usamos el comando siguiente.

deployment-info

Como en estos momentos no tenemos publicada ninguna aplicación, el resultado estará vacío y nos saldrá lo siguiente.

 

5º) Ahora podemos proceder a desplegar una aplicación. Por ejemplo, supongamos que tenemos el anterior fichero "helloworld.war" situado en el escritorio de nuestra máquina Windows. Entonces, podríamos publicar con el siguiente comando:

deploy C:\Users\jjsanchez\Desktop\helloworld.war

A continuación, podríamos volver a consultar la información sobre despliegues para identificar los cambios realizados.

deployment-info

En esta ocasión, el terminal nos indicará que ya hay una aplicación desplegada y preparada para ser utilizada por el usuario.

 

[standalone@127.0.0.1:10199 /] deployment-info
NAME           RUNTIME-NAME   PERSISTENT ENABLED STATUS
helloworld.war helloworld.war true       true    OK

 

La salida del terminal nos mostrará algo así.


6º) De hecho, si ahora intentamos acceder a la aplicación, no deberíamos tener problemas en obtener un resultado positivo. Nos vamos al navegador y ponemos la url.

http://localhost:9280/helloworld/HelloWorld

Si todo ha ido correctamente, el navegador nos mostrará el resultado esperado por la aplicación "helloworld", en función de la codificación implementada.


7º) Del mismo modo, desde el terminal también podríamos deshacer el despliegue de una aplicación. Para ello, tendríamos que usar el siguiente comando.

undeploy helloworld.war

A continuación, podríamos volver a consultar la información sobre despliegues para identificar los cambios realizados.

deployment-info

Ahora, una vez realizado el undeploy de nuestra aplicación, el servidor nos indicará que no hay ninguna publicación realizada.


Y así podríamos seguir haciendo uso del resto de comandos que tenemos disponibles en el terminal CLI de JBoss EAP.  Disponemos de una operativa relativamente amplia para trabajar con el servidor desde este modo de acceso.


Como hemos visto, a la hora de trabajar con JBoss EAP no hay nada que nos obligue a hacerlo desde Eclipse. Es cierto que el plugin JBoss Tools nos facilita mucho el trabajo desde el IDE, pero debemos ser conscientes de que disponemos de formas adicionales de operar con el servidor JBoss. En el post hemos visto cómo se emplea la funcionalidad desde una máquina Windows, pero la utilización sería muy similar desde un máquina Linux, así que eso no nos debería suponer problema alguno. Los scripts nos facilitarán el trabajo tanto en un caso como en el otro.


Pues nada, eso era todo lo que quería comentaros en relación con la Interfaz de Línea de Comandos de JBoss EAP. Ahora lo ideal es que vosotros empecéis a pelearos un poco con el terminal para ampliar vuestros conocimientos. Cualquier duda que os vaya surgiendo, me la vais dejando aquí abajo...

Saludos.


Comentarios

Entradas populares de este blog

Componentes y Ventanas de Java Swing

Creación de Webservice SOAP básico

Eliminar duplicados de una Lista en Java