Usuario:ManuelRomero/AppWeb

=Aplicaciones Web =
 * Definición de aplicación web
 * Aplicación informática que se ejecuta en un entorno web
 * Modelo de ejecución Cliente /Servidor
 * Necesario un protocolo de comunicación.


 * Elementos
 * Cliente: navegador.
 * Servidor: servidor web
 * Comunicación: protocolo HTTP

Servidor de aplicaciones

 * Definición de servidor de aplicaciones
 * Es un software que proporciona aplicaciones a los equipos o dispositivos cliente,
 * Es muy frecuente el uso de la red de Internet para realizarlo
 * Utiliza el protocolo http
 * Presenta dos diferencias con los servidores web (p.e. apache)


 * 1) Hace un extensivo del contenido dinámico
 * 2) De manera muy frecuente realiza integración con bases de datos.

Ventajas de servidor de aplicaciones

 * centralización y simplicidad en desarrollo de aplicaciones
 * Las aplicaciones se ensamblan desde bloques que el servidor provee


 * Integridad de datos y de código
 * Al actulizar los datos que estás centralizados todos los clientes serán conscientes de ello

Tomcat

 * Definición
 * Tomcat es el servidor web (incluye el servidor Apache) que puede gestionar las solicitudes y respuestas http
 * También es servidor de aplicaciones del proyecto Yakarta contenedor de Servlets y JSP
 * Especialmente útil para porgramar aplicaciones web usando java
 * Incluye el compilador Jasper, que compila JSP covirtiéndolas en servlets.

Servlet

 * Definición
 * Un servlet es un programa escrito en java
 * se ejecuta en un servidor
 * normalmente se utiliza para generar contenido html dinámico.


 * Ejemplo de servlet en java
 * Al final del tema al estudiar el despliegue web y analizar el fichero web.xml del servidor de aplicaciones web o contendedor de servlet tomcat probaremos este fichero.

JSP

 * Definición
 * JSP es un lenguaje de programación parecido al lenguaje php
 * Es un código que ejecuta el servidor de aplicaciones web, al lado del servidor en el modelo cliente/servidor
 * Se puede embeber junto con códgio html
 * El servidor interpretar JSP de la misma manera en la que interpreta PHP, generando una página html que entrega al claiente


 * Ejemplo sencillo de un jsp

Tomcat contenedor de servlets

 * Tomcat es un contenedor de servlets con un entorno JSP.
 * es un servidor de aplicaciones web pensado para desarrollos con java (no exclusivo para este entorno)
 * Contenedor de servlets
 * es un shell de ejecución que maneja e invoca servlets por cuenta del usuario.
 * A veces al contenedor de servlets se le llama servidor)
 * Tiene una serie de características entra las que podemos enumerar:


 * 1) gestiona los Servlets (instanciar, acceso, destrucción...)
 * 2) controla su ciclo de vida.
 * 3) Es un programa adicional que hay que instalar para dar soporte a este tipo de aplicaciones Java en entornos J2EE.
 * 4) Algunos de estos "contenedores" disponibles son MacroMedia JRun, Bea WebLogic, Sun One y uno de los más populares: Apache Tomcat.

Clasificación de contenedores de servlets

 * Contenedores de servlets stand-alone (independientes):
 * Estos son una parte integral del servidor web.
 * Este es el caso en el que se usa un servidor web basado en Java,
 * Por defecto Tomcat trabaja en este modo, sin embargo, la mayoría de los servidores no están basados en Java.


 * Contenedores de servlets dentro-de-proceso:
 * En esta configuración del servidor, el contenedor servlets es una combinación
 * Un plugin para el servidor web
 * y una implementación de contenedor Java.
 * El plugin del servidor web abre una JVM (Máquina Virtual Java)
 * dentro del espacio de direcciones del servidor web
 * permite que el contenedor Java se ejecute en él.


 * En el caso de que una petición debiera ejecutar un servlet, el plugin toma el control sobre la petición y lo pasa al contenedor Java (usando JNI).
 * Un contenedor de este tipo es adecuado para servidores multithread de un sólo proceso
 * Además este tipo proporciona un buen rendimiento pero está limitado en escalabilidad.


 * Contenedores de servlets fuera-de-proceso:
 * En este caso la combinación va a ser:
 * plugin para el servidor web
 * y una implementación de contenedor Java
 * Este se ejecuta en una JVM fuera del servidor web.
 * El plugin del servidor web y el JVM del contenedor Java se comunican
 * para ello usan algún mecanismo IPC (normalmente sockets TCP/IP).
 * Si una cierta petición tuviese que ejecutar un servlets, el plugin toma el control sobre la petición y lo pasa al contenedor Java (usando IPCs).
 * El tiempo de respuesta en este tipo de contenedores no es tan bueno como el anterior
 * A su favor, obtiene mejores rendimientos en otras cosas (escalabilidad, estabilidad, etc.)

Instalación de Tomcat
aptitude search "?provides(java-runtime)" apt-get install default-jre JAVA_HOME=/usr/lib/jvm/java6openjdk/ jre/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME $ source /etc/profile o bien $ . /etc/profile http://apache.rediris.es/tomcat/ Imagen:webTomcat.png $ wget http:http://apache.rediris.es/tomcat/tomcat-8/v8.0.18/src/apache-tomcat-8.0.18-src.tar.gz
 * Necesitamos tener instalado JDK
 * buscamos el paquete java que más nos interese
 * instalamos java-runtime
 * actualizamos el PATH del sistema en nuestro profile
 * Indicando donde se ubican los binarios que acabamos de instalar
 * actualizamos las variables de entorno
 * Vamos a la web de tomcat y vemos la última version
 * Tomamos la última version a fecha 17 de febrero del 2015,  v8.0.18 y la descargamos

$ tar xvzf apache-tomcat-8.0.18-src.tar.gz $ mv -fv apache-tomcat-8.0.18-src /usr/local $ ln -s /usr/local/apache-tomcat-8.0.18-src/ /usr/local/tomcat
 * Descomprimimos y desenpaquetamos el fichero
 * Movemos a una carpeta de destino
 * Creamos un enlace para referenciar más comodamente el directorio
 * De este modo tenemos acceso al directorio de tomcat de forma más sencilla

Arranque del sistema
http://127.0.0.1:8080 Imagen:paginaTomcat.png
 * Un script llamado catalina gestiona el servicio de Tomcat
 * 'catalina.hs debe recibir en la invocación parámetros start|stop|restart para actuar.
 * También disponemos de un shell que invoca explícitamente a este fichero startup.sh
 * verificamos el funcionamiento escribiendo en la url
 * Debe aparecernos una página como la que sigue

Iniciando Tomcat

 * Por defecto tomcat
 * 1) puerto 8080
 * 2) directorio ./tomcat/webapps/ROOT
 * Por defecto apache
 * 1) puerto 80
 * 2) directorio ./var/www o ./apache/htdocs según como se haya instalado
 * Vamos a hacer que apache escuche todo
 * Lo configuramos como proxy
 * Apache derivará lo que considere a tomcat
 * aplicamos el principio de escalabilidad
 * Si nuestras necesidades crecen ponemos más tomcat en el sistema

Fichero de configuración
/usr/local/tomcat/conf/server.xml
 * Al ser un fichero xml se configura por elementos y atributos
 * 1) localizamos el elemenot host
 * 2) modificamos el atributo appBase