Usuario:ManuelRomero/despliegue

La estructura de directorios
fichero server.xml directiva appBase en nuestro caso 'appBase=webapp
 * La aplicación web que se crea en el servidor bajo un directorio El directorio de la aplicación
 * Dentro de él tendremos una estructura de subdirectorios
 * Una aplicación web va a contener una serie de elementos
 * El directorio debe de colgar en el directorio base de tomcat
 * Elementos de una aplicación web
 * 1) servlets
 * 2) páginas jsp
 * 3) ficheros html,imágenes,texto, css,sonitos, fídels, etc


 * La estructura de directorios de una aplicación es importante
 * En la especificación de lo que es un servlet lo podemos ver
 * servlets
 * Aplicación java encargada de realizar un servicio específica dentro de un servidor web
 * La especificación 2.4 define la estructura de directorios para los ficheros de una aplicación web
 * Aquí puedes ver el fichero completo de la especificación final Archivo:javaservletspecivication_2_4.pdf

/index.html /howto.jsp /feedback.jsp /images/banner.gif /images/jumping.gif /WEB-INF/web.xml /WEB-INF/lib/jspbean.jar /WEB-INF/classes/com/mycorp/servlets/MyServlet.class /WEB-INF/classes/com/mycorp/util/MyUtils.class
 * Este podría ser un ejemplo sacado de la propia especificación pág 69-70
 * los directorios/ficheros en negrita son obligatorios

Contenidos de los directorios en una aplicación web

 * Es la carpeta raiz del proyecto
 * En él se crean más subdirectorios para organizar la información
 * Los ficheros aquí ubicados serán accesibles por el cliente
 * Habrá html, jsp, css, imágenes, videos, ...
 * También puede haber subdirecctorios para organizar esta información ./imagenes, ./videos ,...
 * También puede haber subdirecctorios para organizar esta información ./imagenes, ./videos ,...


 * /WEB-INF/
 * Elementos de la configuración .WAR web.xml
 * Suelen estar la página de inicio, ubiciación de los servlets, parámetros


 * /WEB-INF/clases/
 * Las clases JAVA empleadas en el archivo .WAR
 * Suelen encontrarse los servlet


 * /WEB-INF/lib/
 * Contiene ficheros jar utilizados por la aplicación
 * Por ejemplo para contectarse a la base de datos

Aplicación web: estructura de tres capas
Imagen:EstructuraTresCapas.png
 * Una aplicación web se estructura en tres capas:

Comenzando a desarrollar la aplicación y despliegue

 * Vamos a realizar una muy sencilla aplicación para ver el despliegue
 * Se trata de una aplicación cliente/servidor que cumpla las siguientes especificaciones

Estructura de directorios de nuestra aplicación
cd /usr/local/tomcat/webapp sudo mkdir primerApp cd primerApp mkdir WEB-INF cd WEB-INF mkdir classes imagen:appWebFich1.png
 * Creamos la estructura de directorios,
 * 1) primero el directorio de la aplicación.
 * 1) Ahora los subdirectorios WEB-INF y classes dentro de WEB-INF
 * Por el momento tendremos la siguiente estructura de directorios.


 * El directorio raiz contendrá el nombre de la aplicación
 * Todos los ficheros que cuelguen de él se pueden servir al cliente menos los que cuelguen de directorios META-INF y WEB-INF
 * Normalmente después de realizar el desarrollo se empaquetarán en un archivo .war, que será lo que tenga el servidor
 * Una estructura de directorios almacenará el código necesario para ejecutar la aplicación.

Relizando el fichero de entrada

 * Por lo tanto nuestro proyecto necesitará los siguientes ficheros
 * 1) el fichero inicial en jsp (podría ser un html) : index.jsp 
 * 2) el servlet ProcesaDatos.class
 * 3) la descriptor del proyecto web.xml


 * Realizaremos el fichero index para nuestra aplicación
 * Podría ser un html o un jsp (no podría ser php, ya que lo va a resolver tomcat)
 * Creamos nuestra página inicial

Fichero html / jsp
  Formulario HTML que invocará a un servlet <%código_jsp%> <%=expresion%>
 * El ejemplo es sencillo
 * Hemos incluido jsp de forma directa usando el modo
 * Podríamos obtener un valor directamente con la forma
 * Este fichero lo guardaremos directamente en la raiz de nuestra aplicación
 * Se ha hecho una tabla y se ha dado un color de fondo para darle más vistosidad
 * Es importante entender el valor del atributo ACTION

http://tomcat.apache.org/tomcat-7.0-doc/proxy-howto.html#Apache_2.0_Proxy_Support

El servlet: ProcesaDatos.java

 * Ahora realizaremos el servlet, programa java que se ejecuta en nuestra máquina e invoca tomcat
 * Generamos nuestros servlet.
 * Un servlet amplía las funcionalidades de un servidor *
 * Normalemnte es una clase java que proporciona un servicio específico.
 * A la hora de implementar, un servlet su clase principal va a extender la clase HttpServlet
 * Cuando el servidor de aplicaciones encuentra una solicitud:
 * 1) invoca al servlet
 * 2) Le pasa detalles sobre la solicitud  en un objeto request de la clase HttpServletRequest
 * 3) Le pasa un objeto response de la clase HttpServletResponse  para devolver el resultado.


 * Realicemos nuestro ejemplo

Compilando el servlet
/usr/local/tomcat/lib/servlet-api.jar javac ProcesaDatos -cp /usr/local/tomcat/lib/servlet-api.jar Si todo va bien nos generará el fichero ProcesaDatos.class que es el que necesitamos
 * Este fichero en principio lo guardamos en nuestro directorio
 * En realidad lo que necesitamos es el class del servlet, por lo que tenemos que compilar
 * Para ello tenemos que tener instalado el sdk de java
 * openjdk-6-jdk
 * openjdk-7-jdk
 * Ahora realizamos la compilación, teniendo en cuenta que ha de usar el fichero jar*
 * por lo que escribimos

El descriptor del proyecto web.xml
http://tomcat-configure.blogspot.com.es/2009/01/tomcat-web-xml.html aplicación http://localhost:8080/primerApp/
 * Es el "Web Application Deployment Descriptor".
 * Es un archivo XML que describe los servlets y otros componentes que componen su aplicación, además de parametros de inicialización y de ambiente que se requieran.
 * Aquí un referencia de su composición
 * La estructura general del fichero
 * Aquí tenemos el fichero web.xml
 * Ahora le debemos añadir información sobre el servlet que va a contener
 * de forma que añadimos las siguientes líneas
 * Una vez terminada la descripción ya podemos lanzar nuestra
 * Escribimos en el navegador

Archivos War

 * WAR Web Applicatio Archive (Archivo de Aplicación Web)
 * Es una forma de empaquetar en un fichero la estructura de directorios que conforman la aplicación web
 * Por lo tanto contendrá
 * 1) Servlets y JSP
 * 2) Contendio estático HTML, css, imágenes
 * 3) Otros recursos web
 * Facilitan enormemente el despliegue web
 * Su estructura ya vista anteriormente

Creación del fichero .WAR
jar -cv0f primerApp.war.
 * Los entornos de desarrollo tipo Eclipse, NetBeans y otro tipo de IDE (JBuilder, JDeveloper) poseen la opción para ello.
 * Otro modo en mediante Ant herramienta open-source que facilita la contrucción de aplicaciones Java
 * Nosotros lo creamos con la herramienta jar de java
 * Nos ubicamos en el propio directorio raiz de la aplicación y escribimos
 * Posterirmente podemos quitar el directorio y sólo con el fichero .war verificaremos que funciona igualmente.

Referencias
Página donde explica el proceso http://elblogdepicodev.blogspot.com.es/2011/02/unir-apache-httpd-y-tomcat-mediante-un.html