Glassfish v2 en producción

07:41PM sep 27, 2007 en categoria Java por Enrique Rodriguez Lasterra

Etiquetas:

La semana pasada salió la versión final de glassfish v2, y aprovechando la ocasión decidí instalarlo para un nuevo proyecto que he comenzado en NHT-Norwick y que cuenta con varios servicios Web.

La integración netbeans 6 / glassfish es perfecta (no podía ser de otra forma) y desarrollar servicios web con JavaEE5 es de lo más sencillo

El único problema que tuve fue con la instalación del enlace mod_jk para glassfish, que obliga a introducir commons-logging dentro de las librerías del servidor y esto produjo conflictos con el log4j de mi aplicación. La solución fue mover log4j a las librerías del servidor para que lo cargase el mismo ClassLoader que commons-logging. La verdad es que había olvidado este tipo de problemas con los ClassLoaders desde que abandonamos el desarrollo de aplicaciones con EJB1.x y 2.x sobre JBoss, esperemos que solo fuese un susto ;-)

Por lo demás, sigo notando un poco lenta la interfaz de administración, pero me encuentro bastante cómodo con la interfaz de comandos, asadmin, así que posiblemente solo la use puntualmente para visualizar las estadísticas de los servicios Web. 

Glassfish Update Center

12:11PM may 27, 2007 en categoria Java por Enrique Rodriguez Lasterra

Etiquetas:

Leo en The Acuarium y más en cocreto http://blogs.sun.com/nazrul/entry/introducing_glassfish_update_center sobre otra nueva característica que no conocía del Glassfish V2, el update center. 

Ya hemos visto que instalar glassafish es bastante sencillo, por lo que actualizarlo no debería ser un problema, pero se nos dan un administrador muy sencillo de usar, mejor que mejor. El administrador es muy similar al que ofrece netbeans, puedes seleccionar tanto modulos nuevos que deseas instalar, como actualizar aquello que han mejorado o solucionado fallos.

Si siguen por el buen camino, esta herramienta podrá ser especialmente util con Glassfish V3.Ya se ha visto en algún screencast lo rápido que arranca, y esto es posible gracias a hk2 el microkernel que permitirá que glassfish use solo los modulos que tu necesitas. Si consiguen que esta configuración se pueda realizar mediante el update center o alguna herramienta muy similar sería todo un tanto.

Para iniciar la herramienta ejecutamos

%glassfish%/updatecenter/bin/updatemanager/updatetool 

La primera imagen, como os decía recuerda al update center del netbeans

Glassfish Update Center 

No tengo experiencia con ninguno de los módulos que ofrece para descarga, y ahora mismo no hay actualizaciones, así que tan solo voy a instalar la documentación y los ejemplos. Selecciones los 3 módulos y pulso el boton de instlar.

Tras aceptar la licencia, (que pesaos¡¡) el procesos de descarga e instalación comienza. Al finalizar, los tres módulos pasan a la pestaña de software instalado.

Glassfish Update Center Installed Software 

 Por ultimo la pestaña de preferencias invita a que en el futuro la comunidad pueda crear sus propios repositorios de software. Puede resultar una exagereción, pero quizás hasta podamos actualizar nuestras aplicaciones con esta herramienta.

Habrá que evaluar si resulta productivo o no, pero en cualquier caso es una ayuda extra a los administradores del servidor.

Glassfish UpdateCenter

Instalando Glassfish en Ubuntu Feisty

12:53AM may 25, 2007 en categoria Java por Enrique Rodriguez Lasterra

Etiquetas:

Si ya era fácil instalar glassfish, más fácil lo es intalarlo desde el recientemente estrenado Ubuntu Feisty. La verdad es que el  paso que ha dado Sun Microsystem al liberar su implementación de Java, va a tener una repercusión increible en el mundo open source. Desde luego, como vamos a ver a continuación, hace que instalar todo un servidor Java EE sea cosa de niños.

Empezamos ejecutando ese grandioso invento llamado apt-get

apt-get install glassfish 

Apt-get calcula las dependencias y nos avisa que necesita instalar glassfish-bin, imq (sistema de mensajeria/JMS de Sun) y sunderby

root@www1:/home/lasterra# apt-get install glassfish
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
glassfish-bin imq sunwderby
The following NEW packages will be installed:
glassfish glassfish-bin imq sunwderby
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/54,2MB of archives.
After unpacking 65,6MB of additional disk space will be used.
Do you want to continue [Y/n]? 

Decimos que sí, tras las descarga de paquetes y el rápido proceso de instalación se nos muestra la licencia de Sun, la leemos detenidamente y nos aseguramos de que no vamos a desarrollar software para uso nuclear. No es mi caso, así que aceptamos.

El proceso de instalación comienza...pero se para al instante después de cambiar los permisos de los comandos de administración. La primera en la frente. Tras varios reintentos y dejandolo esperar un rato, el proceso me muestra un mensaje de error muy claro, el puerto 8080 ya esta ocupado y es le que utiliza glassfish.

Efectivamente un tomcat tenia ese puerto, lo cambio y vuelvo a lanzar el proceso de instalación con:

dpkg --configure glassfih 

Vuelvo a aceptar la licencia y ahora si, tras unos segundos de incertidumbre, el proceso de instalación finaliza y glassfish arranca autmaticamente. En la consola nos muestra los mismos logs que veiamos al instalar manualemente el servidor

Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Domain domain1 created.
Starting Domain domain1, please wait.
Log redirected to /var/lib/sunappserver/domains/domain1/logs/server.log.
Domain domain1 is ready to receive client requests. Additional services are being
started in background.
Domain [domain1] is running [Sun Java System Application Server Platform Edition
9.0_01 (build b21)] with its configuration and logs at: [/var/lib/sunappserver/domains].
Admin Console is available at [http://localhost:4848].
Use the same port [4848] for "asadmin" commands.
User web applications are available at these URLs:
[http://localhost:8080 https://localhost:8181 ].
Following web-contexts are available:
[/web1 /asadmin ].
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi] for domain management purposes.
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].

Accediendo al puerto 80 podemos comprobar que el servidor esta ya funcionando correctamente. Fijaros que el build es el b21, la ultima versión estable de glassfish v1.

Installing Glassfish in Ubuntu Feisty

Instalando Glassfish

12:51AM may 24, 2007 en categoria Java por Enrique Rodriguez Lasterra

Etiquetas:

Glassfish es la implementación de referencia de Java EE 5. La verdad es que Sun esta trabajando mucho en el servidor, todo open source, y ha llegado la hora de probar si ese trabajo es tan bueno como nos cuentan en sus blogs y bitacoras.

Son muchas las cosas que quiero ver: grizzly, las funciones del administrador Web y principalmente, jax-ws, la nueva implementación de servicios Web. En este campo he probado casi de todo menos xfire, y no me acaba de convencer nada de lo que he visto, creo que debería ser mucho más fácil hacer un servicio Web y quiero ver si este nuevo estándar aporta la solución que busco.

Por ultimo, recordaros que el capitán que dirige el rumbo de glassfish casualmente es Español, Eduardo Pelegri-Llopart. Tuve la oportunidad de conocerle en los Sun Tech Days de Madrid el pasado año y prometi escribir algo sobre el, así que, con retraso, pero vamos a ello.

Por cierto, si alguién esta pensando que empiezo esta serie de post empujado por el monitor de 52 pulgadas que dicén regalar, esta en lo cierto ;-)

Pasos de la instalación:

  • Descarga de glassfish, yo me he ido a por la beta2, que para eso estamos de pruebas.
  • Mientras descarga, comprobamos los requisitos, JAVA_HOME y ANT_HOME en las variables de entorno, y ANT_HOME/bin en el PATH
  • Una vez descargado descomprimimos el jar con java -Xmx256m -jar glassfish-installer-v2***.jar
  • Una vez descomprimida ejecutamos el script de ANT de instalación. De primeras vamos a probar sin opciones de clustering haciendo ant -f setup.xml dentro de la carpeta glasfish. Más adelante intentaremos ver las opciones de clustering

Con esto ya tenemos glassfish instalado y todo preparado para empezar a jugar con el.

La primera particularidad de Glassfish frente al Tomcat son los "domains". Un dominio en glassfish es una configuración del servidor. Dentro de esta configuración hay una instancia de administración y N instancias de ejecución, pero todas bajo una misma configuración. De esta forma, con una instalación del servidor puedes tener varias configuraciones/dominios y cada uno de ellos puede tener una configuración distinta : puertos, memoria asignada a la JVM, IIOP, .

Haciendo la analogía con el tomcat, cada dominio del glassfish es una instalación del tomcat con una instancia que tendría tan solo un "manager" (salvando las distancias) y N tomcats con sus respectivas aplicaciones.

Esta configuración puede ser util en entornos con varios administradores que compartan una instalación, aunque sinceramente, no lo acabo de ver, porque en mi pequeño mundo, en un servidor solo hay un administrador ;-)

Al instalar el servidor se crea un dominio por defecto, domain1. Para arrancarlo ejecutamos el comando de administración c:\glassfish\bin\asadmin start-domain domain1. En la consola el servidor nos da información interesante:

asadmin start-domain domain1
Starting Domain domain1, please wait.
Log redirected to C:\glassfish\domains\domain1\logs\server.log.
Redirecting output to C:/glassfish/domains/domain1/logs/server.log
Domain domain1 is ready to receive client requests. Additional services are being
started in background.
Domain [domain1] is running [Sun Java System Application Server
9.1 (build b41d-beta2)] with its configuration and logs at: [C:\glassfish\domains].
Admin Console is available at [http://localhost:4848].
Use the same port [4848] for "asadmin" commands.
User web applications are available at these URLs:
[http://localhost:8080 https://localhost:8181 ].
Following web-contexts are available:
[/web1 / wstx-services ].
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi] for domain management purposes.
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].
Domain does not support application server clusters and other standalone instances.

 

Comprobamos que el servidor esta arrancado accediendo a http://localhost:8080/. Si vemos el "up and running" podemos instalar una aplicación Web para comprobar que todo es correcto. El manual nos propone la siguente aplicación http://glassfish.dev.java.net/downloads/quickstart/hello.war. La descargamos y la copiamos al directorio glassfish/domains/domain/autodeploy dentro del dominio (este viene a ser el directorio webapps del tomcat).

Una vez copiada la aplicación debe aparecer en ese mismo directorio el archivo hello.war_deployed, si intentamos acceder a al aplicación antes obtendremos un error 404.

Para acceder a la aplicación, http://localhost:8080/hello. Si todo es correcto ya podemos decir que la instalación ha sido correcta.

Installing Glassfish