JBoss AS 7- Primera parte: Trucos nuevos de un perro viejo

agosto 12th, 2011 by Alejandro Leave a reply »

Hace muy poco que RedHat liberó la versión 7 de su servidor de aplicaciones.  Con esta nueva versión nos muestra como una empresa grande es capaz de lanzar un producto “viejo” totalmente renovado adecuado a las necesidades actuales. Esta versión no solo soporta Java EE6 sino que también plantea un cambio drástico en la arquitectura del servidor de aplicaciones. Nuestra intensión es sacar una serie de artículos mostrando cuales son los cambios introducidos. Estos no intentan ser una guía completa sobre JBoss 7 sino más bien un vistazo general para que ustedes puedan aprender junto con nosotros que se trae esta nueva versión. Les aclaramos que la información presentada en estos artículos está tomada en parte de la propia documentación de JBoss, de algunos comentarios del foro de JBoss y de nuestra “experimentação”.
Ahora basta de cháchara y arranquemos.

Primero lo primero – Instalando el JBoss AS 7

Cuando vayamos a www.jboss.org veremos que por primera vez existen dos versiones del servidor para bajarnos.

  • Web Profile Only (Java EE6 Certfied)
  • Everthing (NOT Java EE6 Certfied)

La primera como su nombre lo indica está orientada al la ejecución de aplicaciones Web y como se puede apreciar es una configuración certificada en cumplir con todos los requerimientos de un servidor Java EE6 con web profile. La otra configuración es lo que se conoce por Full profile pero que todavía no ha sido certificada y no soporta todos lo que necesita un servidor Full Profile, por lo cual es llamada “Full preview profile”.
Yendo a lo concreto, la diferencia entre el Web y el Full es básicamente es la siguiente

  • JSR 914 – Soporte de JMS
  • JSR 224- Java API 2.2 para WebServices basados en XML (JAX-WS)

Cualquiera de las configuraciones la podemos bajar desde la página de download de JBoss.
Para los ejemplos acá planteados cualquiera de las dos es indistinta. Si no piensan usar JMS y WebServices entonces con la Web van a estar más que bien. Tengan en cuenta que ambas vienen con la variación Lite del contenedor de EJB especificado en la JSR-381. Este contenedor es una versión limitada la cual NO soporta:

  • Remote interfaces
  • RMI-IIOP Interoperability
  • JAX-WS Web Service Endpoints
  • EJB Timer Service (@Schedule, @Timeout)
  • Asynchronous session bean invocations (@Asynchronous)
  • Message-driven beans

Los que quieran ver un poco más sobre que soporta y que no cada una de las versiones pueden consultar la tabla que hay en la guía de JBoss

Ahora a los bifes – Ejecutando el JBoss AS 7.0
Para ejecutar el servidor debemos tener descomprimido el archivo bajado (el zip o el tar.gz) en una carpeta donde mejor nos quede. Por ejemplo en mi caso yo lo instale en Users/ale/opt/Applications/jboss-as-web-7.0.0.Final.
El único requerimiento que tenemos es que debemos tener instalada una versión de la JDK que sea la 6 o superior.

Luego debemos abrir una terminal o consola, dependiendo del sistema en que estamos, y posicionarnos en la carpeta raíz donde instalamos el servidor.
Ahí ponemos nuestro asiento en posición vertical, nos abrochamos los cinturones y ejecutaremos:

  • bin\stanadalone.bat si es que estamos en windows
  • bin/stanadalone.sh si estamos en cualquier variante de Unix

Paren las rotativas!!! ¿Que es esto de standalone? Por ahora para la comprensión de este artículo solo diremos que standalone es uno de los dos modos de ejecución que trae la versión 7. De las dos opciones esta es la más similar en su funcionamiento a las versiones anteriores de JBoss.

Ahora sí, levantemos el JBoss AS 7!!!. tecleamos bin/stanadalone.sh [ENTER]
Podemos ver como en muy pocos segundos ya está el JBoss AS 7 levantado!!! . Ahora sabemos de primera mano que esta nueva versión levanta con una velocidad mucho mayor que cualquiera de sus versiones anteriores. Eso no es por casualidad y se debe a su nuevo diseño el cual nos provee de un nuevo proceso de carga de componentes. Este proceso tiene dos grandes cambios:

  1. Carga concurrente de los servicios, aprovechando los múltiples procreadores que tengamos
  2. Solo levanta los servicios críticos para el correcto funcionamiento del servidor. Cualquier otro servicio no crítico queda levantado en forma pasiva hasta que sea utilizado por primera vez.

Según RedHat esta versión ofrece una reducción de 10 veces en el tiempo de arranque con respecto a las versiones anteriores.
Esto podemos confirmar si miramos la última linea impresa por el JBoss, la cual debe decir algo así:

...
...
...
17:30:11,370 INFO  [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-4) Starting remote JMX connector
17:30:11,405 INFO  [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
17:30:11,878 INFO  [org.jboss.as.remoting] (MSC service thread 1-3) Listening on /127.0.0.1:9999
17:30:12,049 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-8) Starting Coyote HTTP/1.1 on http--127.0.0.1-8080
17:30:12,742 INFO  [org.jboss.as.connector] (MSC service thread 1-7) Starting JCA Subsystem (JBoss IronJacamar 1.0.0.CR2)
17:30:13,360 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) Bound data source [java:jboss/datasources/ExampleDS]
17:30:14,120 INFO  [org.jboss.as.deployment] (MSC service thread 1-4) Started FileSystemDeploymentService for directory /Users/ale/opt/Applications/jboss-as-web-7.0.0.Final/standalone/deployments
17:30:14,132 INFO  [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.0.Final "Lightning" started in 7885ms - Started 92 of 147 services (55 services are passive or on-demand)

En este caso podemos ver como en JBoss levanto en casi 8 segundos.

Para bajar el JBoss no hay misterios, hacemos como siempre hasta ahora Ctrl+C.

Me parece que vi un lindo gatito – Nueva consola Web
Una vez que tenemos el servidor levantado pasemos a ver otra de las mejoras que trae que es su consola web de administración. Esta consola si la comparamos con la anterior es un avance importante en cuanto a la estética. La consola es una aplicación GWT lo cual la hacen mucho más rica en su funcionamiento. Dentro de esta podemos hacer varias actividades de administración, como ser:

  • Configuración de los datasource
  • Configuración de los logs
  • Configuración de los conectores web y virtual host
  • Realizar deployments con al posibilidad de, habilitar, deshabilitar, subir y eliminar aplicaciones
  • Configuración de los puertos

Para conectarnos a esta nueva consola tenemos que abrir un browser e ingresar: http://localhost:9990/console

Una funcionalidad que se ha eliminado es la consola JMX. Este cambio se debe a que con JMX no se podía dar soporte a la nueva administración de dominios (hablaremos de ella en otro artículo). Ahora la forma de administrar es usando el modo nativo de administración. Desde este modo podemos configurar y accederá a todas las propiedades de los servidores. JBoss viene con una extensión que hace de puente entre JMX y la API nativa y nos permite conectarnos con un cliente JMX como el jconsole. En mis pruebas lo que si pude detectar es que no estaban todas las funcionalidades presentes en la consola JMX.

La consola web no es la única forma de acceder a la interfaz nativa de administración. Tenemos estás cuatro opciones:

  • La consola web que como vimos es limitada
  • Con un cliente de linea de comando, muy completo por cierto.
  • Una API java que se puede acceder directamente con java remoting
  • Una API REST-like para enviar comando por http

De estas vale la pena mencionar que la CLI que trae está muy completa, por ejemplo soporta auto completado. Para describir esta consola necesitaríamos una artículo entero. Los interesados pueden leer más sobre esta en JBoss CLI

A la carga – Haciendo nuestro primer deploy
Como ya mencionamos una forma de hacer deploy es por medio del uso de la consola web. Esta forma es muy simple por lo cual no nos vamos a detener en explicar. Lo que si vamos a ver es como hacer un deploy a la vieja usanza copiando el archivo en el directorio de deployment. Para variar esto también ha cambiado, yo estoy convencido de que luego de tantos años de manejar la misma estructura del servidor la gente de JBoss se aburrió y para hacer su trabajo más divertido nos cambio todo!!! Por suerte los cambios son para mejor.

Entonces, ¿Donde debemos copiar nuestra aplicación? Como tenemos levantado el JBoss en modo standalone debemos copiar el artefacto (jar, war o ear) al directorio standalone/deployments. Y listo nuestra aplicación queda levantada y funcionando.

Resumiendo

Los más importante que vimos en el artículo es:
Que versiones están disponibles para bajar
Como levantar el servidor en modo standalone: bin/standalone.sh
Conectarnos a la consola Web: http://localhost:9990/console
Hacer un deployment: Copiar nuestra aplicación a standalone/deployments

Por último espero que hayan visto que esta nueva versión incluye una cantidad de cambios aparte del soporte a Java EE 6.

Para la próxima

En el próximo artículo veremos más sobre los deploy y revelaremos el misterioso “Sandalone”. Antes de despedirme les dejo un deber, ¿luego de hacer el deploy, no ven nada extraño en el directorio deployments?

Saludos y hasta la próxima.

Blogger PostDiggRedditGoogle ReaderShare
Advertisement

1 comment

  1. Marcelo dice:

    Excelente publicación, muchas gracias.

Deja un comentario

Spam protection by WP Captcha-Free