Usuario:ManuelRomero/modulo TOMCAT

De WikiEducator
Saltar a: navegación, buscar

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
Código de ejemplo de un Servlet que procesa una petición GET y devuelve una página web HTML sencilla:
package org.pruebas;
 
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class HolaMundoServlet extends HttpServlet {
 
    /**
     * Servlet de ejemplo que procesa una petición GET
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException 
     */
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
        out.println("<html>");
        out.println("<head><title>Ejemplo Hola Mundo</title></head>");
        out.println("<body>");
        out.println("<h1>¡Hola Mundo!</h1>");
        out.println("</body></html>");
    }
}
  • 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
<html>
<body>
<% out.println("Hola mundo"); %>
</body>
</html>

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.

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

  • Necesitamos tener instalado JDK
  • buscamos el paquete java que más nos interese
aptitude search "?provides(java-runtime)"
  • instalamos java-runtime
apt-get install default-jre
  • actualizamos el PATH del sistema en nuestro profile
  • Indicando donde se ubican los binarios que acabamos de instalar
JAVA_HOME=/usr/lib/jvm/java6openjdk/ jre/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME
  • actualizamos las variables de entorno
$ source /etc/profile
o  bien
$ .  /etc/profile
  • Vamos a la web de tomcat y vemos la última version
http://apache.rediris.es/tomcat/

WebTomcat.png

  • Tomamos la última version v7.0.32 y la descargamos
$  wget http://apache.rediris.es/tomcat/tomcat-7/v7.0.32/src/apache-tomcat-7.0.32-src.tar.gz
  • Descomprimimos y desenpaquetamos el fichero
$ tar xvzf apache-tomcat-7.0.32-src.tar.gz 
  • Movemos a una carpeta de destino
$ mv -fv apache-tomcat-7.0.32-src /usr/local
  • Creamos un enlace para referenciar más comodamente el directorio
$ ln -s /usr/local/apache-tomcat-7.0.32-src/ /usr/local/tomcat
  • De este modo tenemos acceso al directorio de tomcat de forma más sencilla

Arranque del sistema

  • 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
http://127.0.0.1:8080
  • Debe aparecernos una página como la que sigue

Archivo:PaginaTomcat.png

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
 <Host name="localhost" appBase="/var/www"

Haciendo a apache proxy

  • Cargaremos los módulos para hacer que sea apache un proxy
  • para ello usaremos el comando a2enmod
  • Este comando sirve para cargar módulos nuevos
  • Apache se gestiona por módulos
  • La lista de módulos que necesitamos son
proxy, proxyf_ajp, proxy_balancer
  • A continuación rearrancamos el sistema
$a2enmod proxy
$a2enmod proxyf_ajp
$a2enmod proxy_balancer
$ /etc/init.d/apache2 restart

Protocolo ajp

  • En lugar de usar http para comunicar apache-tomcat usamos ajp
  • Es un protocolo interno, veloz y que usa conexiones TCP persistentes

Configuración de virtualhost

  • Debemos modificar el fichero de configuración de virtualhost
  • Editamos /etc/apache2/sites-enabled/000-default
  • Añadimos los siguientes elementos
<Proxy balancer://tomcat_cluster>
Order allow,deny
Allow from all
BalancerMember ajp://localhost:8009
</Proxy>
ProxyPreserveHost On
ProxyPass /phpmyadmin/ !
ProxyPass / balancer://tomcat_cluster/
ProxyPassReverse / balancer://tomcat_cluster/

Conceptos de los parámetros

Proxy balancer://tomcat_cluster
definimos el cluster con nombre tomcat_cluster
BalancerMember jap
//localhost:8009
Se define un miembre a tomcat_cluster
protocolo ajp
IP localhost' o 127.0.0.1
Puerto 8009 que es el que por defecto usa tomcat
ProxyPass / balancer
//tomcat_cluster/:
"/" y todo lo que cuelgue de ella, sea pasado al cluster del tomcat para que lo procese él.
ProxyPreserveHost On
Mantiene la cabecera http host original, en vez de reescribirla.
  • "DocumentRoot" y "<Directory /var/www/>" para que apunten a /var/www/ROOT