14
Página 1 de 14 Un Sencillo Bean de Sesión Esta lección nos presenta la programación de aplicaciones J2EE, y el SDK J2EE mostrándonos como escribir aplicación Enterprise multi-capa que consiste en una página HTML, un servlet y un Bean de sesión. El SDK J2EE es una definición y especificación operacional no comercial de la plataforma J2EE que Sun Mi demostraciones, prototipos y usos educacionales. Viene con el servidor de aplicaciones J2EE, servidor We J2EE, y un completo conjunto de herramientas de desarrollo. Nos iremos encontrando con estas característ vayamos avanzando en este tutorial. Ejemplo de Aplicación Cliente Multi-Capa La pequeña aplicación cliente de ejemplo de esta lección acepta entrada de usuario a través de un formul servlet. El servlet usa el API JNDI (Java Naming and Directory Interface™) para buscar un Bean de sesión él. Este ejemplo es una aplicación pequeña porque el servlet no ejecuta ninguna lógica de negocio. El sencil sesión que se ejecuta en el servidor de aplicaciones J2EE. Por eso el cliente es pequeño, porque no mane de sesión. Las aplicaciones multi-capa pueden consistir en 3 ó 4 capas. Como se ve en la , el ejemplo multi-capa pa capas. La arquitectura de tres capas extiende al cliente estándar de dos capas y el modelo del servidor aplicaciones multi-capa entre la aplicación cliente no-basada-en-web y la base de datos final. La arquit el modelo de tres capas reemplazando la aplicación cliente con un navegador Web y una página HTML potenc servlet/JavaServer Pages™. Mientras que esta lección usa sólo tres o cuatro capas, la siguiente lección extiende este mismo ejemplo para acceder al serv base de datos en la cuarta capa. Lecciones posteriores adaptan el ejemplo para usar las tecnologías Java Markup Language (XML). Software J2EE y Configuración Para ejecutar los ejemplos del tutorial, necesitas descargar e instalar el SDK Java 2 Ente ( http://java.sun.com/j2ee/download.html ), y SDK Java 2, Standard Edition(J2SE), Versión 1.2 o posterior ( http://java.sun.com/jdk/index.html ). Las instrucciones de este tutorial asumen que J2EE y J2SE están instalados en el directorio J2EE debajo usuario. Nota: Siempre que se utilice monicap en un nombre de path, tendrás que cambiarlo por tu nombre de usuario. Unix:

Un Sencillo Bean de Sesión

  • Upload
    jacota

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Pgina 1 de 14

Un Sencillo Bean de SesinEsta leccin nos presenta la programacin de aplicaciones J2EE, y el SDK J2EE mostrndonos como escribir una sencilla y pequea aplicacin Enterprise multi-capa que consiste en una pgina HTML, un servlet y un Bean de sesin.

El SDK J2EE es una definicin y especificacin operacional no comercial de la plataforma J2EE que Sun Microsystem a liberado para demostraciones, prototipos y usos educacionales. Viene con el servidor de aplicaciones J2EE, servidor Web, base de datos, los APIs J2EE, y un completo conjunto de herramientas de desarrollo. Nos iremos encontrando con estas caractersticas y herramientas segn vayamos avanzando en este tutorial.

La pequea aplicacin cliente de ejemplo de esta leccin acepta entrada de usuario a travs de un formulario HTML que invoca un servlet. El servlet usa el API JNDI (Java Naming and Directory Interface) para buscar un Bean de sesin que realice los clculos por l. Este ejemplo es una aplicacin pequea porque el servlet no ejecuta ninguna lgica de negocio. El sencillo clculo lo realiza un Bean de sesin que se ejecuta en el servidor de aplicaciones J2EE. Por eso el cliente es pequeo, porque no maneja el proceso; lo hace el Bean de sesin. Las aplicaciones multi-capa pueden consistir en 3 4 capas. Como se ve en la , el ejemplo multi-capa para este tutorial tiene cuatro capas. La arquitectura de tres capas extiende al cliente estndar de dos capas y el modelo del servidor situando un servidor de aplicaciones multi-capa entre la aplicacin cliente no-basada-en-web y la base de datos final. La arquitectura de cuatro capas extiende el modelo de tres capas reemplazando la aplicacin cliente con un navegador Web y una pgina HTML potenciada con las tecnologas servlet/JavaServer Pages.

Ejemplo de Aplicacin Cliente Multi-Capa

Mientras que esta leccin usa slo tres o cuatro capas, la siguiente leccin extiende este mismo ejemplo para acceder al servidor de base de datos en la cuarta capa. Lecciones posteriores adaptan el ejemplo para usar las tecnologas JavaServer Pages y Extensible Markup Language (XML).

Para ejecutar los ejemplos del tutorial, necesitas descargar e instalar el SDK Java 2 Enterprise Edition (J2EE), Versin 1.2.1 (http://java.sun.com/j2ee/download.html), y SDK Java 2, Standard Edition (J2SE), Versin 1.2 o posterior (http://java.sun.com/jdk/index.html). Las instrucciones de este tutorial asumen que J2EE y J2SE estn instalados en el directorio J2EE debajo del directorio home del usuario. Nota: Siempre que se utilice monicap en un nombre de path, tendrs que cambiarlo por tu nombre de usuario. Unix:

Software J2EE y Configuracin

Pgina 2 de 14/home/monicap/J2EE/j2sdkee1.2.1 /home/monicap/J2EE/jdk1.2.2 Windows: \home\monicap\J2EE\j2sdkee1.2.1 \home\monicap\J2EE\jdk1.2.2 Configuracin del Path y ClassPath La descarga contiene el servidor de aplicaciones J2EE, la base de datos Cloudscape, un servidor Web que usa capas de socket seguras (SSL) tambin conocido como HTTP sobre HTTPS, herramientas de desarrollo y despliegue, y los APIs Java para Enterprise. Para usar estar caractersticas, debemos configurar las variables de entorno path y classpath como se describe aqu: Configuracin del Path La configuracin del Path hace accesibles las herramientas de desarrollo y despliegue desde cualquier lugar de nuestro sistema. Debemos asegurarnos de seleccionar estos path antes de cualquier otro path que pudiramos tener de viejas instalaciones del JDK. Unix: /home/monicap/J2EE/jdk1.2.2/bin /home/monicap/J2EE/j2sdkee1.2.1/bin Windows: \home\monicap\J2EE\jdk1.2.2\bin \home\monicap\J2EE\j2sdkee1.2.1\bin Configuracin del ClassPath La configuracin del ClassPath le dice a las herramientas de desarrollo y despliegue de Java 2 dnde encontrar las distintas libreras de clases que usa: Unix: /home/monicap/J2EE/j2sdkee1.2.1/lib/j2ee.jar Windows: \home\monicap\J2EE\j2sdkee1.2.1\lib\j2ee.jar

Los programadores de aplicaciones J2EE escriben componentes de aplicacin J2EE. Un componente J2EE es una unidad de software funcional auto-contenida que se ensambla dentro de una aplicacin J2EE y que se comunica con otros componentes de aplicacin. La especificacin J2EE define los siguientes componentes de aplicacin: Componentes de Aplicacin Cliente Componentes JavaBeans Enterprise Componentes Servlets y JavaServer Pages (tambin llamados componentes Web) Applets En esta leccin, crearemos una aplicacin y dos componentes J2EE: un servlet y un Bean de sesin. El servlet est empaquetado con su fichero HTML en un fichero Web Archive (WAR), y las clases e interfaces del Bean de sesin estn empaquetadas en un fichero JAR. Los ficheros WAR y JAR se aaden a la aplicacin J2EE y se empaquetan dentro de un fichero Enterprise Archive (EAR) para probar, verificar y desplegar el entorno de produccin. Mientras estemos haciendo todos estos pasos para esta leccin, realmente estaremos realizando varias funciones diferentes. Escribir el cdigo del servlet y del Bean de sesin es una funcin de desarrollo, mientras que crear la aplicacin J2EE y aadir los componentes J2EE a una aplicacin es una funcin de ensamblaje. En realidad, estas funciones podran ser realizadas por diferentes personas de diferentes compaas.

Componentes de Aplicacin J2EE

La pgina HTML para esta leccin se llama bonus.html. Su cdigo HTML est debajo de la , que muestra cmo vera la pgina HTML el usuario. El fichero bonus.html tiene dos campos de datos en los que usuario puede introducir un nmero de seguridad social y un multiplicador. Cuando el usuario pulsa el botn Submit, BonusServlet.java recupera el dato del usuario, busca el Bean de sesin, y le pasa el dato del usuario al Bean de sesin. el Bean de sesin calcula un valor "bonus" y lo devuelve al servlet. El servlet devuelve otra pgina HTML con el valor del "bonus" para que lo vea el usuario.

Crear la Pgina HTML

Pgina 3 de 14

La siguiente Figura muestra el flujo de los datos entre el navegador y el Bean de sesin. El Bean de sesin se ejecuta en el servidor de aplicaciones J2EE.

Cdigo HTML Lo ms interesante sobre el cdigo del formulario HTML es el alias usado para invocar aBonusServlet . Cuando el usuario pulsa el botn Submit sobre el formulario HTML, se llama aBonusServlet porque se ha mapeado a BonusAlias durante el ensamblaje de la aplicacin descrito en Ensamblar la Aplicacin J2EE. El ejemplo asume que bonus.html est en el directorio /home/monicap/J2EE/ClientCodeen UNIX. Aqu y desde ahora los usuarios de Windows pueden invertir las barras inclinadas para obtener los paths correctos para su plataforma: Bonus Calculation Enter social security Number: Enter Multiplier:

Crear el ServletEl ejemplo asume que el fichero BonusServlet.java est en el directorio/home/monicap/J2EE/ClientCode en UNIX. Durante la ejecucin, el cdigo del servlet hace lo siguiente: Recupera los datos del usuario Busca el bean de sesin Le pasa los datos al bean de sesin Despus de recibir un valor de vuelta desde el bean de sesin, crea una pgina HTML para mostrar el valor devuelto al usuario. La siguiente seccin describe las diferentes partes del cdigo del servlet. Aqu puedes ver el cdigo del Servlet completo. Sentencias Import El cdigo del servlet empieza con sentencias import para los siguientes paquetes:

Pgina 4 de 14 javax.servlet, que contiene clases servlets genricas (independientes del protocolo). La clase HTTPServlet usa la clase ServletException de este paquete para indicar un problema en el servlet. javax.servlet.http, que contiene clases servelts HTTP. La clase HttpServlet est en este paquete. java.io para entrada y salida del sistema. La clase HttpServlet usa la claseIOException de este paquete para sealarque se ha producido una excepcin de algn tipo de entrada o salida. javax.naming para poder usar los APIs Java Naming and Directory Interface (JNDI) para buscar el interface home del bean de sesin. javax.rmi para buscar el interface home del bean de sesin y poner su objeto servidor remoto listo para las comunicaciones.

Mtodo init() El mtodo BonusServlet.init busca el interface home del bean de sesin y crea su ejemplar. El mtodo usa el nombre JNDI especificado durante el ensamblado de componentes (calcs) para obtener una referencia al interface home por su nombre. La siguiente lnea pasa la referencia y la clase del interface home al mtodo PortableRemoteObject.narrow para asegurarse de que la referencia puede forzarse al tipo CalcHome. InitialContext ctx = new InitialContext(); Object objref = ctx.lookup("calcs"); homecalc = (CalcHome)PortableRemoteObject.narrow(obj ref, CalcHome.class); Mtodo doGet La lista de parmetros de doGet toma un objeto request y un response. El navegador enva una peticin (request) al servlet y el servlet enva una respuesta (response) de vuelta al navegador. La implementacin del mtodo accede a informacin del objeto request para encontrar quin ha hecho la peticin, en qu formulario estn los datos de la peticin, y que cabeceras HTTP se enviarn, y usa el objeto response para crear una pgina HTML en respuesta a la peticin del navegador. El mtodo doGet lanza una IOException si hay algn problema con los datos de entrada o salida cuando maneja la peticin, y una ServletException si la peticin no se puede manejar. Para calcular el valor del bonus, el mtodo doGet crea el interface home y llama al mtodocalcBonus. public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String socsec = null; int multiplier = 0; double calc = 0.0; PrintWriter out; response.setContentType("text/html"); String title = "EJB Example"; out = response.getWriter(); out.println("") out.println(title); out.println(""); try{ //Retrieve Bonus and Social Security Information String strMult = request.getParameter( "MULTIPLIER"); Integer integerMult = new Integer(strMult); multiplier = integerMult.intValue(); socsec = request.getParameter("SOCSEC"); //Calculate bonus double bonus = 100.00; theCalculation = homecalc.create(); calc = theCalculation.calcBonus( multiplier, bonus); }catch(Exception CreateException){ CreateException.printStackTrace(); } //Display Data out.println("Bonus Calculation"); out.println("Soc Sec: " + socsec + ""); out.println("Multiplier: " + multiplier + ""); out.println("Bonus Amount: " + calc + "");

Pgina 5 de 14out.println(""); out.close(); } Cdigo del Servlet Aqu est el cdigo completo: import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import javax.naming.*; import javax.rmi.PortableRemoteObject; import Beans.*; public class BonusServlet extends HttpServlet { CalcHome homecalc; public void init(ServletConfig config) throws ServletException{ //Look up home interface try{ InitialContext ctx = new InitialContext(); Object objref = ctx.lookup("calcs"); homecalc = (CalcHome)PortableRemoteObject.narrow( objref, CalcHome.class); } catch (Exception NamingException) { NamingException.printStackTrace(); } } public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String socsec = null; int multiplier = 0; double calc = 0.0; PrintWriter out; response.setContentType("text/html"); String title = "EJB Example"; out = response.getWriter(); out.println(""); out.println(title); out.println(""); try{ Calc theCalculation; //Get Multiplier and Social Security Information String strMult = request.getParameter("MULTIPLIER"); Integer integerMult = new Integer(strMult); multiplier = integerMult.intValue(); socsec = request.getParameter("SOCSEC"); //Calculate bonus double bonus = 100.00; theCalculation = homecalc.create(); calc = theCalculation.calcBonus(multiplier, bonus); } catch(Exception CreateException){ CreateException.printStackTrace(); } //Display Data out.println("Bonus Calculation"); out.println("Soc Sec: " + socsec + ""); out.println("Multiplier: " + multiplier + ""); out.println("Bonus Amount: " + calc + ""); out.println("");

Pgina 6 de 14out.close(); } public void destroy() { System.out.println("Destroy"); } }

Un bean de sesin representa una conversacin temporal con un cliente. Si el servidor o el cliente, se cuelgan, el bean de sesin y sus datos se van. En contraste, los beans de entidad son persistentes y representan datos en una base de datos. Si el servidor o el cliente se bloquean, los servicios relacionados aseguran que los datos del bean de entidad se graban. La siguiente Figura muestra como funcionan el servlet y el bean de sesin como una aplicacin J2EE completa una vez que se han ensamblado y desplegado. El contenedor, mostrado en la caja sombreada, es el interface entre el bean de sesin y las funcionalidades especificas de la plataforma de bajo-nivel que soporta el bean de sesin. El contenedor se crea durante el despliegue.

Crear el Bean de Session

La siguiente seccin muestra el cdigo del bean de sesin. El ejemplo asume que los ficheros

CalcBean.java ,

Calc.java,

y CalcHome.java estn situados en el directorio/home/monicap/J2EE/Beans. La sentencia package Beans en la parte superior del interfaceCalcBean y los ficheros de clases es el mismo nombre que el nombre de este directorio. Cuando se compilen estos ficheros, se hara desde el directorio superior Beans y el nombre del paquete Beans (o directorio) se pretende que apunte al interface y los ficheros class compilados. Compilar el Bean de Sesin. Nota: Este ejemplo muestra cmo escribir un bean de sesin, pero tambin es posible comprar beans enterprise a un proveedor y ensamblarlos dentro de una aplicacin J2EE. CalcHome

BonusServlet no trabaja directamente con el bean de sesin, sino que crea un ejemplar de su interface home. El interface home extiende EJBHome y tiene un mtodo create para crear el bean de sesin en su contendor. Se lanzar una CreateException si no se puede crear el bean de sesin y una RemoteException si ocurre una excepcin relacionadacon las comunicaciones durante la ejecucin del mtodo remoto. package Beans; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface CalcHome extends EJBHome { Calc create() throws CreateException, RemoteException; } Calc Cuando se crea el interface home, el servidor de aplicaciones J2EE crea el interface remoto y el bean de sesin. El interface remoto extiende EJBObject declara el mtodo calcBonus para el clculo del valor del bonos. Este mtodo requiere que se lance unajavax.rmi.RemoteException, y est implementado por la clase CalcBean. package Beans; import javax.ejb.EJBObject; import java.rmi.RemoteException;

Pgina 7 de 14public interface Calc extends EJBObject { public double calcBonus(int multiplier, double bonus) throws RemoteException; } CalcBean La clase del bean de sesin implementa el interface SessionBean y proporciona el comportamiento para el mtodo calcBonus. Los mtodos setSessionContext y ejbCreateson llamados en este orden por el contendor despus de que BonusServlet llame al mtodocreate CalcHome. Los mtodos vacos son del inteface SessionBean. Estos mtodos los llama el contenedor del bean. No tenemos que proporcionar comportamiento para estos mtodos a menos que necesitemos funcionalidades adicionales, por ejemplo cuando el bean es aadido o eliminado de su contenedor. package Beans; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class CalcBean implements SessionBean { public double calcBonus(int multiplier, double bonus) { double calc = (multiplier*bonus); return calc; } //These methods are described in more //detail in Lesson 2 public void ejbCreate() { } public void setSessionContext( SessionContext ctx) { } public void ejbRemove() { } public void ejbActivate() { } public void ejbPassivate() { } public void ejbLoad() { } public void ejbStore() { } }

Compilar el Bean de Sesin y el ServletPara ahorrarnos tecleado, la forma ms sencilla para compilar el bean de sesin y el servlet es con un script (en Unix) o un fichero batch (en Windows). Compilar el Bean de Session Unix #!/bin/sh cd /home/monicap/J2EE J2EE_HOME=/home/monicap/J2EE/j2sdkee1.2.1 CPATH=.:$J2EE_HOME/lib/j2ee.jar javac -d . -classpath "$CPATH" Beans/CalcBean.java Beans/CalcHome.java Beans/Calc.java Windows cd \home\monicap\J2EE set J2EE_HOME=\home\monicap\J2EE\j2sdkee1.2.1 set CPATH=.;%J2EE_HOME%\lib\j2ee.jar javac -d . -classpath %CPATH% Beans/CalcBean.java Beans/CalcHome.java Beans/Calc.java Compilar el Servlet Unix #!/bin/sh cd /home/monicap/J2EE/ClientCode J2EE_HOME=/home/monicap/J2EE/j2sdkee1.2.1 CPATH=.:$J2EE_HOME/lib/j2ee.jar: /home/monicap/J2EE javac -d . -classpath "$CPATH" BonusServlet.java

Pgina 8 de 14Windows cd \home\monicap\J2EE\ClientCode set J2EE_HOME=\home\monicap\J2EE\j2sdkee1.2 set CPATH=.;%J2EE_HOME%\lib\j2ee.jar; \home\monicap\J2EE javac -d . -classpath %CPATH% BonusServlet.java

Necesitamos arrancar el servidor de aplicaciones J2EE para desplegar y ejecutar el ejemplo. El comando para arrancar el servidor est en el directorio bin debajo de nuestra instalacin J2EE. Si tenemos el path configurado para que lea el directorio bin, vamos directamente al directorio J2EE (entonces nuestra versin real corresponde con lo que veremos en el texto) y tecleamos: j2ee -verbose Nota: Algunas veces el servidor J2EE no arranca si estmos ejecutando Outlook Si esto no funciona, tecleamos lo siguiente desde el directorio J2EE: Unix: j2sdkee1.2.1/bin/j2ee -verbose Windows: j2sdkee1.2.1\bin\j2ee -verbose La opcin verbose imprime mensajes de informacin en la lnea de comandos cuando el servidor arranca. Cuando veamos J2EE server startup complete , podemos arrancar la herramienta de despliegue. Por ahora, podemos ignorar los otros mensajes que aparecen.

Arrancar el Servidor de Aplicaciones J2EE

Para ensamblar y desplegar la aplicacin J2EE, tenemos que arrancar la herramientadeploytool. Si tenemos el path configurado para que lea el directorio bin, vamos directamente al directorio J2EE (entonces nuestra versin real corresponde con lo que veremos en el texto) y tecleamos: deploytool Si esto no funciona, hacemos lo siguiente desde el directorio J2EE: Unix: j2sdkee1.2.1/bin/deploytool Windows: j2sdkee1.2.1\bin\deploytool Notas: Si ocurre un error de acceso a memoria mientras arrancamos deploytool , aadimos una variable de entorno llamada JAVA_FONTS y seleccionamos el path a c: \ . Por ejemplo c:\winnt\fonts. Tambin, si se encuentra una NullPointerException paraBasicFileChooserUI cuando se arranca deploytool, debemos asegurarnos de no arrancar la herramienta desde el directorio raz (es decir c:\ ). Si la ejecutamos desde cualquier otro lugar, como el directorio bin de nuestra instalacin j2sdkee1.2, no encontraremos este problema.

Arrancar la Herramienta DeployTool

DeployToolEl herramienta DeployTool mostrada en la siguiente figura tiene cuatro ventanas principales. La ventana "Local Aplications" muestra las aplicaciones J2EE y sus componentes. La ventana "Inspecting" muestra informacin sobre la aplicacin o componentes seleccionados. La ventana "Servers" nos dice si el servidor de aplicaciones se est ejecutando en un host local. Y la ventana "Server Aplications" nos dice qu aplicaciones tenemos instaladas. Cuando sigamos los pasos para ensamblar la aplicacin de ejemplo J2EE, veremos que todas estas ventanas nos muestran informacin.

Pgina 9 de 14

Nota: A la derecha de la ventana Server Applications hay un botn gris Uninstall. Despus de desplegar la aplicacin, veremos la aplicacin listada en esta ventana. Podemos pulsar sobreUninstall para desinstalarla, hacerle cambios, y reinstalarla sin tener que parar y rearrancar el servidor de aplicaciones.

Ensamblar una aplicacin J2EE implica crear una nueva aplicacin, y aadirle los componentes de aplicacin. Aqu tenemos un sumario de los pasos para ensamblar, que se describen abajo con ms detalle. 1. Crear una nueva aplicacin J2EE (BonusApp.ear). 2. Crear un nuevo bean enterprise (CalcBean.jar). 3. Crear un nuevo componente web (Bonus.war). 4. Especificar un nombre JNDI para el bean enterprise (calcs). 5. Especificar el contexto raz para la aplicacin J2EE (BonusRoot ). Crear la aplicacin J2EE Los componentes J2EE se ensamblan dentro de ficheros (EAR) "Enterprise Archive". Menu File : Seleccionamos New Application . Caja de dilogo New Application: Tecleamos BonusApp.ear para el Application File Name. Pulsamos el botn derecho del ratn en el campo Application Display Name.BonusApp aparece en el nombre. Pulsamos el botn Browse para abrir el selector de ficheros para seleccionar la localizacin donde queremos grabar el fichero EAR Selector de Ficheros New Application: Localizamos el directorio donde queremos situar el fichero EAR de la aplicacin. En este ejemplo, este directorio es /home/monicap/J2EE . En el campo File name, tecleamos BonusApp.ear. Pulsamos sobre New Application . Pulsamos sobre OK. En la ventana de Local Applications ahora aparecer "Bonusapp.ear", y en la ventana Inspector a la derecha muestyra el nombre, la localizacin y la informacin de contenidos paraBonusApp . La meta informacin mostrada en la ventrana contents describe el fichero JAR y la aplicacin J2EE, y prorporciona informacin de tiempo de ejecucin sobre la aplicacin. Crear el Bean de Sesin Los beans Enterprise (tanto de entidad como de sesin) se empaquetan en un fichero JAR. Men File: Seleccionamos New Enterprise Bean. Arrancar el New Enterprise Bean Wizardy mostrar un digolo de introduccin que sumariza los pasos que vamos a tomar. Despus de leerlos, pulsamos sobre Next . Caja de Dilogo EJB JAR: Especificamos la siguiente informacin: Enterprise Bean will go in : BonusApp Display name: CalcJar Description: Un sencillo Bean de sesin que calcula un bonus y tiene un mtodo.

Ensamblar la Aplicacin J2EE

Pgina 10 de 14Pulsamos sobre Add. Hay dos botones en esta pantalla. No aseguramos de pulsar el segundo que est cerca de la ventana Contents. Caja de Dilogo Add Files to .JAR: vamos al directorio J2EE. Podemos teclear el nombre del path o usar el navegador para obetenerlo. Una vez en el directorio J2EE, hacemos doble click sobre beans para mostrar el contenido del directorio beans. Selecionamos Calc.class . Pulsamos sobre Add . Seleccionamos CalcHome.class . Pulsamos sobre Add . Seleccionamos CalcBean.class . Pulsamos sobre Add . Nota Importante: La caja de dilogo Add Contents to .JAR se debera parecer a la de la figura siguiente. Las clases Enterprise Bean JAR se deberan mostrar con el prefijo del nombre de directorioBeans.

Pulsamos OK. Ahora deberamos estar de nuevo en la caja de dilogo EJB JAR.Beans/Calc.class , Beans/CalcHome.class, y Beans/CalcBean.class deberan aparecer en la ventana Contents. Pulsamos Next. Caja de dilogo General: Seleccionamos la siguiente informacin: classname: Beans.CalcBean Home interface: Beans.CalcHome Remote interface: Beans.Calc Bean type: Session y Stateless Especificamos el nombre (el nombre que aparece cuando el fichero JAR se aade a BonusApp en la ventana de "Local Applications"), y proporcionamos una descripcin para los contenidos del ficheros JAR. Display Name: CalcBean Description: Este fichero JAR contiene el bean de sesin CalcBean. Pulsamos sobre Next . Caja de Dilogo Environment Entries: Este ejemplo no hace uso de las propiedades (entradas de entorno) pero nosotros si podramos: Pulsamos sobre Finish . Verificar que el fichero JAR se aadido realmente a la aplicacin J2EE: Vamos a la ventana "Local Applications" Pulsamos el grfico gris en frente de BonusApp . Veremos el fichero JAR CalcJar. Pulsamos el grfico gris en frente de CalcJar para ver el bean de sesin CalcBean.

Pgina 11 de 14

Crear Componentes Web Los componentes Web (servlets, o JavaServer Pages) se empaquetan dentro de un fichero Web Archive (WAR). Men File : Seleccionamos New Web Component . Se arrancar el New Web Component Wizard y mostrar una ventana que sumariza los pasos que vamos a tomar. Despus de leerlos, pulsamos sobre Next . Caja de dilogo WAR File General Properties : Proporcionamos la siguiente informacin: WAR file: BonusApp Display name: BonusWar Description: Este fichero war contiene un servlet y una pgina HTML Pulsamos Add . Caja de Dilogo Add Contents to WAR: Vamos el directorio ClientCode tecleando ClientCode despus de J2EE en el campoRoot Directory. Seleccioamos bonus.html. Debemos asegurarnos de que WAR contents muestra el listado como bonus.html sin el directorio ClientCode precediendo al nombre. Pulsamos sobre Add . Nota: Debemos asegurarnos de aadir bonus.html antes de aadir BonusServlet.class

Pulsamos sobre Next . Elegimos de nuevo el directorio ClientCode. Seleccionamos BonusServlet.class. Debemos asegurarnos de que WAR BonusServlet.class sin el directorio precediendo el nombre. Pulsamos sobre Add . Caja de Digolo Contents to WAR: La pantalla se debera parecer a la de la siguiente figura:

contentsmuestra

el

nombre

de

Pgina 12 de 14

Pulsamos Finish . Caja de digolo WAR File General Properties : Pulsamos Next . Caja de dilogo Choose Component Type: Selecccionamos Servlet (si no est ya seleccionado) Puslamos Next . Caja de Dilogo Component General Properties: Nos aseguramos de que BonusServlet est seleccionado para la clase Servlet. Introducimos un nombre ( BonusServlet ) y una descripcin. Podemos ignornar las selecciones de Startup y load sequence aqu porque este ejemplo slo usa un servlet. Caja de dilogo Component Initialization Parameters: Pulsamos Next . BonusServlet no usa ningn parmetro de inicializacin. Caja de dilogo Component Aliases: Pulsamos Add . Tecleamos BonusAlias y pulsamos Return . Este es el mismo nombre de alias que pusimos en el campo ACTION del formulario HTML embebido en el fichero bonus.html. Pulsamos Finish . En el panel de contenido, podemos ver que el fichero WAR contiene un fichero XML con informacin estructural y de atributos sobre la aplicacin web. el fichero bonus.html, y el fichero class BonusServlet. El formato del fichero WAR es donde van todas las clases servlet en un punto de entrada con Web-INF/classes. Sin embargo, cuando se despliega el fichero WAR, la clase BonusServlet se sita en un directorio raz de contexto bajo public_html. Esta situacin es la convencin parra servidores web compatibles con Servlet 2.2. Para cambiar el nombre o la descripcin: Ponemos el cursor en el campo apropiado en la ventana Lo cambiamos segn nuestros deseos Pulsamos la tecla Return para que las ediciones tengan efecto.Especificar el Nombre JNDI y el Contexto Raz Antes de poder desplegar la aplicacin BonusApp y sus componentes, tenemos que especificar el nombre JNDI que BonusServlet usa para buscar el bean de sesin CalcBean, y especificar un directorio de contexto raz donde el desplegador pondr los componentes web. Nombre JNDI: Seleccionamos el fichero BonusApp en la ventana "Local Applications". La ventana "Inspecting" muestra pestaas en la parte superior, y una de esas pestaas es JNDI Names.

Pgina 13 de 14Seleccionamos Select JNDI. La ventana "Inspecting" muestra una pantalla con tres columnas y una fila. CalcBean se ve en la columna central. En la columna ms a la derecha bajo el nombre JNDI, tecleamos calc. Este nombre JNDI es el mismo nombre JNDI pasado al mtodo BonusServlet.lookup. Pulsamos la tecla Return. Contexto Raz: Pulsamos la pestaa Web Context en la parte superior de la ventana Inspecting. Veremos BonusWar en la columna de la izquierda. Tecleamos BonusRoot en la columna de la derecha Pulsamos la tecla Return. Durante el despliegue se crea el directorio BonusRoot bajo el directorio public_html en nuestra instalacin J2sdkee1.2, y los ficheros bonus.htmly BonusServlet se copian como muestra en la siguiente figura:

Alias: En la ventana LocalApp, pulsamos BonusWar y luego BonusServlet Pulsamos la pestaa Aliases de la parte superior de la ventana Inspecting. Deberamos ver BonusAlias en el campo. Si BonusAlias no est ah, lo tecleamos y pulsamos Return.

Antes de desplegar la aplicacin, es una buena idea ejecutar el verificador. El verificador nos mostrar errores en los componentes de la aplicacin como un mtodo no existente en el bean que el compilador no captura. Verificar: Con BonusApp seleccionado, elegimos Verifier desde el men Tools. En el dilogo que aparece, pulsamos OK. La ventana nos debera decir si no han fallado los tests. Cerramos la ventana del verificador porque ya estamos listos para desplegar la aplicacin. Nota: En la versin 1.2 podramos obtener un error tests app.WebURI. Esto significa que la herramienta de desarrollo no puso una extensin .war al fichero WAR durante su creacin. Este es un bug menor y la apliacin J2EE se despliega bien sin notarlo. Desplegar: Desde el men Tools, elegimos Deploy Application . Se mostrar una caja de dilogoDeploy BonusApp. Debemos verificar que la seleccin Target Server es o localhost o el nombre del servidor donde se est ejecutando el J2EE. Nota: No debemos seleccionar el check box Return Client Jar. La nica vez que necesitamos seleccionar este check box es cuando despleguemos una aplicacin solitaria para el programa cliente. Este ejemplo usa un servlet y una pgina HTML por eso no debemos seleccionarlo. Seleccionar este check box crea un fichero Jar con la informacin de despliegue necesaria para una aplicacin solitaria.

Verificar y Desplegar la Aplicacin J2EE

Pulsamos Next. Nos aseguramos de que el nombre JNDI muestra calcs. Si no lo hace, lo tecleamos nosotros mismos y pulsamos la tecla Return. Pulsamos Next. Nos aseguramos de que el nombre Context Root muestraBonusRoot. Si no lo hace, lo tecleamos nosotros y pulsamos la tecla Return. Pulsamos Next . Pulsamos Finish para empezar el despliegue. Aparecer una caja de dilogo que mostrar el estado de la operacin de despliegue. Cuando est completa, las tres barras de la izquierda estrn completamente sombreadas, como se ve en la siguiente figura. Cuando esto suceda, pulsamos OK.

Pgina 14 de 14

Ejecutar la Aplicacin J2EEEl servidor web se ejecuta por defecto en el puerto 8000. Para abrir la pgina bonus.htmlapuntamos nuestro navegador a http://localhost:8000/BonusRoot/bonus.html, que es donde DeployTool puso el fichero HMTL. Nota: Si necesitamos usar un puerto diferente porque el puerto 8000 est siendo utilizado por otra cosa, editamos el fichero web.properties en el directorio ~/J2EE/j2sdkee1.2/config y arrancamos de nuevo el servidor J2EE. Rellenamos un nmero de seguridad social. Rellenamos un multiplicador. Pulsamos el botn Submit. BonusServlet procesa nuestros datos y devuelve una pgina HTML con el clculo del bono. Bonus Calculation Soc Sec: 777777777 Multiplier: 25 Bonus Amount 2500.0

El men Tools tiene dos opciones de inters. Son Update Application Files y Update and Redeploy Application. Estas opciones nos permiten cambiar el cdigo y redesplegar nuestra aplicacin con facilidad. Simplemente hacemos los cambios en el cdigo, lo recompilamos, y elegimos una de estas opciones del men. Update Application Files actualiza los ficheros de la aplicacin con nuestro nuevo cdigo. En este punto podemos verificar la aplicacin o desplegarla. Update and Redeploy Application actualiza los ficheros de la aplicacin con nuestro nuevo cdigo y redespliega la aplicacin sin ejecutar el verificador.

Actualizar el Cdigo de Componentes