Aplicaciones JEE 2008-2009 DASDI 1 Repasamos … Tres tipos de aplicaciones Aplicaciones Web Java Objetos distribuidos EJBs Aplicaciones Empresariales 2008-2009 DASDI 2 Plataforma J2EE 2008-2009 DASDI 3 Clientes 2008-2009 DASDI 4 Aplicaciones Web Java 2008-2009 DASDI 5 Aplicación Web Java Colección de recursos: Jsps Servlets Ficheros Html, Imagenes Librerías (jars), etc… Ubicados en un URI específico http://www.dasdi.uniovi.es/calculadora Resuelven una funcionalidad Interfaz de usuario Web 2008-2009 DASDI 6 Aplicaciones Web J2EE Organización: estructura jerárquica de directorios dos partes Un árbol de directorios privado: WEB-INF 2008-2009 contiene los recursos que no son descargables para el cliente Un árbol de directorios público aplicación\ index.html login.jsp images\ *.gif doc\ *.pdf META-INF\MANIFEST.MF WEBWEB -INF\ INF\ web.xml Deployment Descriptor classes\ *.class lib\ *.jar DASDI 7 Archivos WAR Web Permiten empaquetar en una sola unidad aplicaciones web java completas Se despliega en un servidor de aplicaciones contenedor Web Hacer un “deploy” al servidor El servidor “desmonta” el war y coloca cada cosa donde lo necesita 2008-2009 Application Archive Cada servidor a su manera DASDI 8 Archivos WAR Son una extensión del archivo JAR Se introdujeron en la especificación 2.2 de los servlets. Multiplataforma MultiVendor root\ META-INF\ MANIFEST.MF *.* Estructura de un JAR 2008-2009 DASDI 9 Archivos WAR: Ventajas Simplifican el despliegue de aplicaciones web. Facilidad de instalación Copiar fichero en el servidor Uno para cada servidor si es un cluster. Seguridad 2008-2009 No permite el acceso entre aplicaciones web distintas (aunque se ejecuten en el mismo servidor) DASDI 10 Ejemplo de Estructura JSP pages, HTML documents, image files app.war Content directories JSP pages, HTML documents, image files web.xml WEB-INF Class files classes beans Package directories 2008-2009 lib JAR files tlds TLD files DASDI Class files 11 Estructura Ejemplo index.html faq.war WEB-INF web.xml list.jsp admin classes lib tlds show.jsp add.jsp delete.jsp psql.jar faqServlet.class 2008-2009 DASDI faqtags.tld 12 Descriptor de Despliegue: web.xml WEB-INF/web.xml Documento XML <?xml version=”1.0” encoding=”ISO-8859-1” ?> <DOCTYPE web-app PUBLIC ”-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN” ”http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”> <web-app> . . . </web-app> En él se dan de alta Servlets, JSPs, TLDs, Filtros, etc… 2008-2009 Se informa al servidor de como es la aplicación DASDI 13 Ejemplo de Web.xml 2008-2009 web.xml tiene muchas opciones de configuración, echa un vistazo a la DASDI 14 especificación Creación manual de .WAR 2008-2009 DASDI 15 Empaquetado de Enterprise JavaBeans 2008-2009 DASDI 16 EJBs Los EJBs se agrupan en paquetes para poder ser distribuidos. En un solo paquete se pueden dar de alta varios EJBs de diferentes tipos: 2008-2009 Sesión, Entidad, MDB El módulo o paquete de distribución es un archivo JAR con una determinada estructura. DASDI 17 Archivo EJB-JAR Un EJB-JAR es la manera en que son distribuidos desarrollos EJB's 2008-2009 WAR modulariza aplicaciones con JSP's/Servlets EJB-JAR modulariza aplicaciones con EJB's Facilitan el despliegue de los EJBs en cualquier servidor de aplicaciones J2EE compatible DASDI 18 Estructura EJB-JAR /*.class Bajo este directorio base se encuentran las diversas clases que conforman a un EJB /META-INF/ejb ejb--jar.xml Descriptor de despliegue /META-INF/* Otros archivos de configuración requeridos por el contenedor de EJBs 2008-2009 Nombre y formato particular a cada vendor orion-jar.xml, jboss.xml, web-sphere.xml, etc DASDI 19 Ejemplo estructura EJB-JAR 2008-2009 DASDI 20 ejb-jar.xml Descriptor de Despliegue META-INF/ejb-jar.xml Documento XML En él se dan de alta y declaran EJBs Parámetros del contexto Relaciones Políticas transaccionales etc <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-ar PUBLIC "-//Sun Microsystems, Incprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar > . . . </ejb-jar> 2008-2009 DASDI 21 Ejemplo ejb-jar.xml 2008-2009 DASDI 22 Aplicaciones Empresariales Java 2008-2009 DASDI 23 Aplicación empresarial JEE Aplicación empresarial JEE = Aplicación/es web java empaquetadas en WAR + Objetos distribuidos EJB empaquetados en JAR = Archivo EAR. 2008-2009 Soluciona problemas relativos al ClassLoader del sistema DASDI 24 Estructura del Enterprise Application Archive /*.war Archivos WAR. /*.jar Archivos EJB-JAR (jar). /META-INF/application.xml application.xml Descriptor de despliegue del módulo EAR. 2008-2009 DASDI 25 META-INF/application.xml Descriptor de Despliegue En él se dan de alta y declaran Nombre y descripción de la aplicación que se despliega Los diferentes módulos web y EJB que forman la aplicación. <?xml version="1.0" ?> <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc. //DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd"> <application> <display-name>Piloto curso Web. Seresco.</display-name> <description>Prácticas del curso de desarrollo web</description> <module> <web> <web-uri>appblank.war</web-uri> <context-root>/appblank</context-root> </web> </module> 2008-2009 DASDI </application> 26 Estructura application.xml 2008-2009 DASDI 27 Referencias • Libros Web Development with JavaServer Pages by Duane Fields and Mark Kolb (Manning) Core Servlets and JavaServer Pages by Marty Hall (Prentice-Hall) Java Server Programming J2EE Edition (Wrox) Books URLs Servlet specification available at http://java.sun.com/products/servlet/download.html 2008-2009 www.javasoft.com www.theserverside.com DASDI 28 Taller práctico … Construcción “a mano” de mi primera aplicación Web 2008-2009 DASDI 29 Paso a paso … 2008-2009 El OC4J sólo admite el despliegue de aplicaciones J2ee completas, es decir, archivos EAR. Tenemos que construir nuestro propio archivo EAR conteniendo un solo archivo WAR con una página HTML estática. Primero entonces, vamos a “montar” nuestra aplicación Web … DASDI 30 Paso a paso … Mi primera aplicación Web Como mínimo, vamos a tener que crear una página estática (index.html) y un descriptor de despliegue web.xml. 2008-2009 Creamos una carpeta temporal TRABAJO colgando de la carpeta PROYECTOS Dentro de trabajo creamos una carpeta WEB-INF. Ahora, colgando de trabajo y con el bloc de notas creamos el archivo index.html con el clásico “Hola Mundo!”. Y dentro de WEB-INF, creamos el archivo web.xml con el siguiente contenido … DASDI 31 Paso a paso … Web.xml básico Contenido del Web.xml básico: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-namePrototipo Curso Web. Seresco.</display-name> <description> Prototipo desarrollado para el curso sobre desarrollo web para Seresco.</description> <!-- Página de entrada por defecto --> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> 2008-2009 DASDI 32 Paso a paso … Estructura del WAR Tenemos ya la estructura básica del archivo WAR: trabajo WEB-INF web.xml index.html 2008-2009 DASDI 33 Paso a paso … Creación del WAR Abrimos una ventana de comandos mediante setenv.bat Nos colocamos DENTRO del directorio trabajo Creamos un archivo jar mediante la herramienta jar del jdk y lo llamamos trabajo.war jar cvf trabajo.war * 2008-2009 Ya tenemos el archivo war creado. Podemos comprobar que es un zip común abriéndolo con el Winrar. ¿Lo desplegamos ya? No podemos: El OC4J sólo admite despliegue de módulos EAR. DASDI 34 Paso a paso … Creación del EAR Como mínimo, vamos a tener que crear un descriptor de despliegue application.xml. 2008-2009 Creamos una carpeta temporal TRABAJO-EAR colgando de la carpeta PROYECTOS Movemos dentro el archivo trabajo.war Dentro de trabajo creamos una carpeta METAINF. Y dentro de META-INF, creamos el archivo application.xml con el siguiente contenido … DASDI 35 Paso a paso … application.xml básico Contenido del application.xml básico: <?xml version="1.0" ?> <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc. //DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd"> <application> <display-name>Piloto curso Web. Seresco.</display-name> <description>Prácticas del curso de desarrollo web</description> <module> <web> <web-uri>trabajo.war</web-uri> <context-root>/trabajo</context-root> </web> </module> </application> 2008-2009 DASDI 36 Paso a paso … Estructura del WAR Tenemos ya la estructura básica del archivo WAR: Trabajo-ear META-INF application.xml trabajo.war 2008-2009 DASDI 37 Paso a paso … Creación del EAR Abrimos una ventana de comandos mediante setenv.bat Nos colocamos DENTRO del directorio trabajo-ear Creamos un archivo jar mediante la herramienta jar del jdk y lo llamamos trabajo.ear jar cvf trabajo.ear * Ya tenemos el archivo ear creado. Para desplegar: Arrancamos el OC4J Desplegamos el nuevo EAR por medio de la herramienta de administración del OC4J: java -jar %OC4J_HOME%\admin.jar ormi://localhost admin admin -deploy -file trabajo.ear deploymentName trabajo HAY QUE DAR DE ALTA LA APP WEB EN EL http-website.xml Lo probamos en http://localhost:8888/trabajo 2008-2009 DASDI 38 Paso a paso … Creación del EAR 2008-2009 DASDI 39