Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a...

13
Ejercicios de instalación y administración de GlassFish Índice 1 Introducción.................................................................................................................. 2 2 Creación de un nuevo dominio..................................................................................... 2 3 Despliegue de la primera aplicación web en NetBeans................................................3 4 Grupos de proyectos e Integración con Mercurial....................................................... 5 5 Desplegando la aplicación sin NetBeans (1 punto)...................................................... 7 6 Empaquetando una aplicación EAR (2 puntos)........................................................... 9 7 Entrega........................................................................................................................ 12 Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Transcript of Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a...

Page 1: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

Ejercicios de instalación yadministración de GlassFish

Índice

1 Introducción..................................................................................................................2

2 Creación de un nuevo dominio.....................................................................................2

3 Despliegue de la primera aplicación web en NetBeans................................................3

4 Grupos de proyectos e Integración con Mercurial....................................................... 5

5 Desplegando la aplicación sin NetBeans (1 punto)......................................................7

6 Empaquetando una aplicación EAR (2 puntos)........................................................... 9

7 Entrega........................................................................................................................12

Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 2: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

1. Introducción

En esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administraciónde GlassFish. Para ello, utilizaremos GlassFish 3.1.2.2 y NetBeans 7.2 como entorno dedesarrollo.

La instalación de estas dos aplicaciones no conlleva ninguna dificultad, de hecho laversión Java EE de NetBeans ofrece la posibilidad de instalar GlassFish y Tomcat 7 comoparte de la instalación. Es una tarea sencilla pero consume su tiempo así que partiremosde una máquina virtual con el Software preinstalado.

Como siempre, utilizaremos para trabajar la cuenta "expertojava" (clave "expertojava").Veréis que todo el software está preinstalado en la carpeta /opt, pero además hay unacceso directo a NetBeans en el escritorio.

2. Creación de un nuevo dominio

A continuación lo que haremos es crear un nuevo dominio, mediante la herramientaasadmin y el comando visto en teoría. Para ello accederemos a la carpeta de GlasFish

$ cd /opt/glassfish-3.1.2.2/bin$ ./asadmin create-domain curso

A continuación el comando nos preguntará el nombre del usuario administrador ysimplemente pulsaremos intro para aceptar el valor por defecto (usuario admin, sin clave).La ejecución del comando continuará y al final nos informará de los distintos puertos quese han configurado para el dominio. El más importante para nosotros va a ser el puerto deadministración, que será el 4848 (si estos puertos ya están en uso, GlassFish nos asignarápuertos nuevos de forma automática. Otra opción es definirlos manualmente en lallamada al comando create-domain).

El siguiente paso será arrancar el dominio curso:

$ ./asadmin start-domain curso

Y para comprobar que ha arrancado correctamente, accederemos a la consola deadministración abriendo un navegador con la siguiente dirección:

http://localhost:4848

Tras unos segundos, se cargará la consola (la primera vez que arranca, desde que se iniciael dominio es una carga bastante lenta) mostrando directamente la configuración denuestro dominio (recordad que el usuario no tenía password).

Como paso final, cerraremos el navegador y pararemos el dominio, mediante el comando:

Ejercicios de instalación y administración de GlassFish

2Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 3: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

$ ./asadmin stop-domain curso

3. Despliegue de la primera aplicación web en NetBeans

En el apartado anterior creamos un dominio nuevo y lo iniciamos y posteriormente loparamos. Ahora vamos a ver cómo desplegar una sencilla aplicación en el domino queacabamos de crear, con el enfoque de un desarrollador, es decir, trabajando siempre desdeel entorno de desarrollo, en este caso NetBeans.

NotaAunque existe versión en castellano de NetBeans, aquí vamos a usar la de inglés, ya que lamayor parte de referencias y tutoriales que podréis encontrar están en este idioma.

Empezaremos haciendo click en el acceso directo de NetBeans situado en el escritorio yseguiremos los siguientes pasos:

1. En primer lugar, creamos una aplicación web ejemplo. En NetBeans pulsamos lapestaña 'Projects' y pulsamos con el botón derecho en el panel y escogemos la opción'New Project...'. También podemos realizar la misma acción con el menú 'File > NewProject...'.

Escoged la opción 'Samples > Java EE > Servlet Examples'. Se nos pediráconfirmar el nombre del proyecto y la ruta destino. Mantendremos el nombre perocambiaremos la carpeta por defecto NetBeansProjects por apli-expertojava, que seránuestro repositorio para este módulo.

2. Vamos a comprobar las dos vistas del proyecto, la que nos ofrece el panel 'Projects'y la del panel 'Files'.

En el panel de proyectos tenemos una visión lógica del proyecto web: las páginas web,los ficheros de configuración, los recursos del servidor (vacío), los paquetes de fuentesque contienen el código fuente del proyecto y las librerías que contienen los ficheros Jarutilizados en el proyecto.

En el panel de ficheros, tenemos la visión física de los ficheros que forman parte delproyecto web. Vemos que es bastante distinta a la que estábamos acostumbrados conEclipse:

• Carpeta 'build': aquí se guarda la versión compilada del proyecto con la estructuraestándar de una aplicación web. Al igual que en Eclipse, cuando se guarda un archivose compila automáticamente por defecto, por lo que no será necesario compilar elproyecto explícitamente.

• Carpeta 'dist': fichero War con toda la aplicación web, listo para desplegarse en elservidor de aplicaciones.

• Carpeta 'nbproject': carpeta de netbeans con los ficheros ant del proyecto y otros

Ejercicios de instalación y administración de GlassFish

3Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 4: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

ficheros de configuración (dependencias entre proyectos, librerías, etc.).• Carpeta 'src': paquetes Java con el código fuente del proyecto.• Carpeta 'web': páginas HTML y JSP del proyecto y ficheros de configuración del

proyecto web (WEB-INF/web.xml y WEB-INF/glassfish-web.xml)

Aprovechad a explorar las carpetas para comprobar qué tipo de ficheros hay en cada una.

3. Existe un tercer panel, que es el panel 'Services'. Desde este panel accederemos a losdiferentes servicios (no sólo servicios web), que podamos requerir en nuestrasaplicaciones. Así, podemos tener accesos a bases de datos, a contratos de servicios webde acceso público desde internet, herramientas de integración continua, y un largoetcétera.

En este punto nos interesa la carpeta la carpeta Servers, donde nos encontraremos a losservidores de aplicaciones que hayamos configurado en la instalación. En el caso vuestramáquina virtual, tenéis preconfigurado GlassFish y su dominio por defecto 'domain1' bajoel nombre de 'GlassFish Server 3+'

Lo que haremos será registrar nuestro dominio curso en NetBeans y para ello,pincharemos con el botón derecho sobre Servers -> Add Server...

Seleccionaremos: tipo de servidor GlassFish Server 3+, y como nombre 'curso'.Pincharemos en siguiente (dos veces) y seleccionaremos el dominio de GlassFish 'curso',que es con el que vamos a trabajar.

Hecho esto, ya veremos en la lista de servidores, el nuevo dominio curso. Si pulsamoscon el botón derecho sobre él, nos mostrará una serie de opciones de control de Glassfish,entre ellas: iniciar el dominio en modo normal o en depuración, pararlo y acceder a suconsola de administración. Ni más ni menos que lo que ya conocemos pero directamente

Ejercicios de instalación y administración de GlassFish

4Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 5: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

desde el IDE.

Por último, mediante este menú, iniciad GlassFish, con la opción 'Start'

4. Vamos a desplegar y ejecutar la aplicación web desde NetBeans. Para ello activamos elpanel de proyectos y pulsamos la opción 'Run' sobre el menú contextual del proyecto'ServletExamples'. En el panel inferior vemos que aparece una pestaña 'ServletExamples(run)' en la que se muestra la salida de la tarea Ant que realiza el despliegue en el servidorque tenemos en marcha. Una vez compilado, el proyecto se despliega en el servidor deaplicaciones y se lanza un navegador con su página principal.

5. Comprobamos en el panel de servicios que el proyecto se encuentra desplegado en elServidor. Para ello haremos click en 'curso' y expandiremos la subcarpeta 'Applications'.

6. Abrimos con el navegador la dirección de la consola de administración desde el menúcontextual de GlassFish. Ya en la consola, pinchamos en el panel izquierdo el nodo'Aplicaciones' y aparecerá en el panel principal la lista de aplicaciones web desplegadas.En este caso sólo estará ServletExamples:

Seleccionamos la aplicación y pulsamos en el botón 'Anular implementación' (la palabra'implementación' de la versión en castellano significa 'deployment'). Se elimina laaplicación del servidor. En el IDE, debemos pulsar el botón derecho sobre el servidor yseleccionar la opción para refrescar su estado. Veremos que también desaparece laaplicación.

4. Grupos de proyectos e Integración con Mercurial

NetBeans no utiliza el concepto de workspaces de Eclipse, en su lugar utiliza "grupos deproyectos". Un grupo de proyecto asocia varios proyectos que pueden o no estar en lamisma carpeta (a diferencia de la estructura en forma de árbol de Eclipse). Si nodefinimos y seleccionamos ningún grupo, trabajaremos sobre el 'por defecto', que sealmacenará en $HOME/NetBeansProjects.

Ejercicios de instalación y administración de GlassFish

5Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 6: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

Si queremos definir un grupo nuevo, accederemos a File -> Project Group -> New

Group. Aquí definiremos el nombre del grupo, escogeremos la opción de 'free group', yfinalmente importaremos los proyectos con los que vayamos a trabajar.

Un posible forma de estructurar los proyectos en estas sesiones es definir dos grupos:GlassFish y WebLogic, en los que incluiremos los proyectos de cada uno de estosbloques, independientemente de que todos formen parte del mismo repositorio

Hablando de repositorios, NetBeans es capaz de trabajar de forma integrada, con variossistemas de control de versiones, entre ellos Mercurial. Para comenzar a trabajar conMercurial, basta con abrir un proyecto que esté dentro de un repositorio, o bien desdeNetBeans crear un repositorio, y añadir proyectos al mismo.

En nuestro caso, acabamos de crear un proyecto pero aún no tenemos definido elrepositorio. Desde NetBeans podemos ir a Team-> Mercurial -> Initialize

project(aseguraos de que se selecciona la carpeta contenedora del proyecto). Con estecomando se creará el repositorio y el fichero .hgignore correspondiente.

Una vez hecho esto, tendremos los comandos de Mercurial, disponibles en el menú Team,aunque por supuesto podremos seguir usando los comandos desde la consola.

NotaCuando tengamos que crear un proyecto nuevo, debemos asegurarnos de que se crea dentro delrepositorio (NetBeans no obliga a ello).

Otra particularidad de NetBeans es que por defecto no indica el estado de sincronizaciónde un archivo con respecto al repositorio, sin embargo cuando hagamos cualquier cambiosobre un archivo, se mostrará un icono azul indicando que hay cambios pendientes de"commit".

Para poder subir los cambios nuestro proyecto a Bitbucket, basta con seleccionar Team->Properties y establecer la propiedad default-push a la ruta de nuestro repositorio enBitbucket:

Ejercicios de instalación y administración de GlassFish

6Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 7: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

Una vez hecho esto, bastará con ejecutar Team -> Share -> Push to default (elcomando pull lo podemos configurar de la misma forma). Si queremos, de forma puntualhacer push/pull contra otro repositorio remoto, tenemos la opción push to other/pull

to other

Para descargar las plantillas de los proyectos, podemos ejecutar el comando clone desdeTeam -> Mercurial -> Clone Other

5. Desplegando la aplicación sin NetBeans (1 punto)

Vamos a ver cómo desplegar aplicaciones web directamente en el servidor deaplicaciones, sin utilizar NetBeans. Lo más habitual es desplegar una aplicaciónutilizando la consola, pero en entornos de desarrollo podemos beneficiarnos de la carpetaautodeploy del dominio. Vamos a probar ambas formas, comenzando por ésta última:

1. Generamos el fichero WAR de la aplicación en NetBeans. Para ello, compilamos laaplicación web escogiendo 'Clean and Build' con el botón derecho. El WAR generado seencontrará en el directorio dist del proyecto. En este caso la aplicación se llamaTomcatServletExample.war. Los proyectos de NetBeans los encontraréis en la carpetaapli-expertojava creada en el directorio Home del usuario expertojava.

2 Desde un Shell ejecutaremos:

Ejercicios de instalación y administración de GlassFish

7Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 8: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

$ cd /opt/glassfish-3.1.2.2/glassfish/domains/curso/autodeploy$ cp $HOME/apli-expertojava/ServletExamples/dist/TomcatServletExamples.war.

Al cabo de unos instantes aparecerá un fichero terminando en '_deployed', que indicaráque la aplicación ha sido desplegada. Lo podemos comprobar accediendo a la aplicacióncon el navegador (http://localhost:8080/TomcatServletExample/) o consultándoloen la consola de administración.

Si revisáis el proyecto veréis que hay dos descriptores sun-web y glassfish-web. Pordefecto la plantilla de NetBeans indica el context-root en el sun-web, pero Glassfishignora este descriptor al existir la nueva versión (glassfish-web). Haced los cambiospertinentes para que el context root de la aplicación sea /ServletExamples y probad adesplegarla de nuevo.

Entramos en la consola de administración y eliminamos la aplicación, para poderdesplegarla de la otra forma.

3 En la consola de administración, selecciona en el panel izquierdo la opción'Aplicaciones' y pulsa en el panel principal derecho el botón 'Implementar...'. Indicamos laruta donde se encuentra el fichero WAR que GlassFish copiará y cargará en el servidor.

Borra la ruta del contexto raíz (Root de contexto en la peculiar traducción de la consola)para que GlassFish use únicamente la definida en el fichero glassfish-web.xml delproyecto.

Comprobad que la aplicación se ha desplegado correctamente y que se puede acceder aella desde la dirección:

http://localhost:8080/ServletExamples/

La aplicación se habrá desplegado en el directorio~/glassfish-3.1.2.2/glassfish/domains/curso/applications/j2ee-modules/. Otra forma dedesplegar la aplicación desde la consola de administración sería indicando un directoriodel disco duro accesible desde GlassFish. En este caso el servidor no copia el ficheroWAR a su directorio local, sino que utiliza el propio directorio indicado.

Ejercicios de instalación y administración de GlassFish

8Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 9: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

6. Empaquetando una aplicación EAR (2 puntos)

Vamos a construir una sencilla aplicación EAR para demostrar las posibilidades de estetipo de configuraciones. Hasta ahora, los ficheros WAR nos permitían empaquetar unaaplicación web y un conjunto de ficheros JAR utilizados en la aplicación. Los ficherosJAR deben estar en el directorio WEB-INF/lib de la aplicación.

El problema de este enfoque es que la instalación de más de una aplicación en un mismoservidor de aplicaciones obliga a multiplicar las instalaciones de librerías en las distintasaplicaciones web. Cuando distintas aplicaciones utilizan las mismas librerías repetidas(por ejemplo, log4java o las apache commons), es necesario colocarlas en todas lasaplicaciones.

Los ficheros EAR solucionan este problema, ya que permiten empaquetar en un mismofichero un distintas aplicaciones web (ficheros WAR) y distintos ficheros JAR accesiblesdesde cualquier aplicación web. Veamos paso a paso cómo configurarlo en NetBeans:

1. Comenzaremos creando un proyecto Maven Enterprise Application desde elasistente de NetBeans:

El asistente nos permite generar de forma automática tres proyectos: un proyecto EAR, unproyecto WAR y un proyecto JAR con EJB's. Desmarcaremos éste último y dejaremos elresto con los valores por defecto.

Ejercicios de instalación y administración de GlassFish

9Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 10: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

La estructura de proyectos que se crea, es la típica en una Enterprise application: Unproyecto POM padre y un POM hijo por cada sub proyecto (EAR, WAR y JAR).

2. Ahora vamos a Crear la librería JAR e incorporarla a la aplicación enterprise. Para ellocreamos un proyecto nuevo de tipo 'Maven > Java Application'. Le damos comonombre 'apli-calculadora'. Definimos una clase llamada Calculadora en el paquetees.ua.jtech en la que se definen dos funciones estáticas: suma y multiplica. Elcódigo fuente es el siguiente:

package es.ua.jtech;public class Calculadora {

public static int suma(int a, int b) {return a+b;

}public static int multiplica(int a, int b) {

return a*b;}

}

Podéis eliminar las clases App y TestApp ya que realmente no se trata de una aplicaciónJava.

Para generar el JAR pulsamos con el botón derecho en la opción 'Build' y el proyecto secompila y se crea el fichero target/calculadora.jar.

Para terminar, hay que declarar el proyecto JAR como un módulo dependiente delproyecto Padre. Esto se consigue pinchando en con el botón derecho en la carpetamodules del proyecto apli-ear y seleccionando Add Module...

3. Añadir el proyecto JAR como dependencia del proyecto Web. Debemos ir al proyectoapli-web y en dependencias, hacer click con el botón derecho y pinchar en Add

Dependency... y seleccionar el proyecto apli-calculadora:

Ejercicios de instalación y administración de GlassFish

10Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 11: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

Tened en cuenta que la dependencia se define como provided.

4. Añadir la libería JAR como dependencia del proyecto EAR. Similar al paso anterior,auque en este caso, el scope de Maven debe ser compile pues queremos que se incluyadentro del EAR.

5. Vamos a crear un JSP que use la calculadora. En la carpeta Web Pages del proyectoapli-web verás que ya hay un index.jsp. Sustituye su contenido por el siguiente:

<%@page import="es.ua.jtech.Calculadora" %><h2> 2+2 = <%= Calculadora.suma(2,2) %> </h2>

6. Compilamos el EAR (botón derecho sobre el proyecto apli-ear > Build) ycomprobamos el contenido del paquete con el navegador de archivos. Vemos que,efectivamente, contiene el JAR con la clase Calculadora, dentro de la carpeta lib y elWAR con la aplicación web:

7. Desplegamos el EAR en el servidor pulsando el botón derecho sobre el proyectoapli-ear-ear y seleccionado Run . Accediendo a la URL http://localhost:8080/apli-ear-web/se ejecutará index.jsp y debería aparecer el resultado.

8. Por último, vamos a crear un nuevo proyecto tipo Maven-> Web Application,denominado apli-ear-web2 que haga uso de la librería apli-calculadora e incluirlodentro de nuestro Ear. En lugar de utilizar el método sumar de la clase Calculadora,

Ejercicios de instalación y administración de GlassFish

11Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 12: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

invocaremos el método multiplicar.

Para que se integre con la Ear actual, tenéis que:

• Añadir el nuevo proyecto como módulo de apli-ear.• Añadir apli-calculadora como dependencia provided del proyecto apli-ear-web2.• Añadir a apli-ear-ear la dependencia apli-ear-web2, de tipo war.

Hecho esto, desplegad de nuevo la aplicación Ear y comprobad que funcionan ambasaplicaciones web.

7. Entrega

La entrega constará de dos partes, por un lado la aplicación ear y por otra el backup deldominio curso ([alumno]-curso-sesion1.zip), que se deberá generar con la herramientaasadmin con el comando descrito en la teoría. La etiqueta de entrega correspondiente aesta sesión y a las sucesivas será entrega-apli.

En la siguiente sesión también trabajaremos con el dominio curso, por tanto podéis omitirla exportación del dominio, siempre y cuando lo hagáis en la siguiente sesion.

Crearemos un proyecto "Quickstart" con Maven, de nombre apli-entregables dondecopiaremos todos las soluciones que no se correspondan con código fuente. Desde lapestaña Files, crearemos una carpeta por cada sesión, y allí copiaremos nuestrosficheros.

$ mvn archetype:generate

Ejercicios de instalación y administración de GlassFish

12Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.

Page 13: Ejercicios de instalación y administración de GlassFishEn esta serie de ejercicios vamos a trabajar los aspectos más básicos de la administración de GlassFish. Para ello, utilizaremos

Ejercicios de instalación y administración de GlassFish

13Copyright © 2012-2013 Dept. Ciencia de la Computación e IA All rights reserved.