Componentes web - jtech.ua.es · batería de conexiones a BD • Estas conexiones se abrirán al...
Transcript of Componentes web - jtech.ua.es · batería de conexiones a BD • Estas conexiones se abrirán al...
Experto Universitario Java Enterprise
Componentes web
Sesión 1: Aplicaciones web Java
© 2012-2013 Depto. Ciencia de la Computación e IA
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Índice• El servidor web Tomcat• Aplicaciones web Java• Configuración de Tomcat
2
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
El servidor web Tomcat• Servidor web construido sobre la plataforma Java
• Necesitamos tener instalado JDK para utilizarlo
• Soporta parte de la especificación de Java EE para desarrollar aplic. web (servlets y JSPs)
• Instalamos el servidor web descomprimiéndolo en el directorio escogido• En Windows contamos con un instalador
• Establecemos variables de entornoJAVA_HOME: Directorio de JDKCATALINA_HOME: Directorio donde hemos instalado Tomcat
3
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Ejecución de Tomcat• En Linux contamos con los comandos:
${CATALINA_HOME}/bin/startup.sh: Activar el servidor${CATALINA_HOME}/bin/shutdown.sh: Detener el servidor
• En Windows tenemos un Monitor en el menú Inicio – Programas, que permite iniciar y parar el servidor con el ratón
• Una vez en marcha podemos acceder a su página de bienvenida:http://localhost:8080/
4
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Estructura física de Tomcat• Tomcat
• bincatalina.shstartup(=catalina start), shutdown(=catalina stop)
• lib: librerías comunes a servidor y aplicaciones• conf: configuración del servidor • logs: dir. por defecto de logs de depuración• webapps: aplicaciones web• work: directorio temporal
5
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Ficheros de configuración
• Dentro de /conf:• server.xml (configuración principal)• web.xml (configuración global a todas las aplicaciones)• tomcat-users.xml (logins y passwords de usuarios)• catalina.policy (fichero de políticas de seguridad)
• En Tomcat 5.x y anteriores había una aplicación web de configuración y administración del servidor
6
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Aplicaciones web• Una aplicación web es una aplicación a la que se accede
mediante HTTP• Utilizando un navegador web
• A la hora de desarrollar una aplicación web suelen utilizarse diferentes tecnologías
7
• En el lado del SERVIDOR:• Debe ser capaz de recoger la
petición del cliente y enviarle la respuesta adecuada
• Puede valerse de herramientas externas para procesar la petición y generar la respuesta de forma dinámica• Servlets, JSP, PHP, ASP, etc.
• En el lado del CLIENTE:• Al cliente se le ofrece una respuesta
visible en forma de página web• Podemos utilizar elementos estáticos
(HTML) o bien valernos de herramientas que den cierto dinamismo también a lo que se envía al cliente• Javascript, Applets, Flash, etc.
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Aplicaciones web Java EE• Las aplicaciones web Java EE se componen de:
• Recursos estáticosHTML, imágenes, etc.
• Documentos dinámicosPáginas JSP
• Clases JavaServlets, beans y otros objetos JavaDeben ser compiladas
• Configuración de la aplicaciónDescriptor de despliegue (fichero XML)
8
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Estructura de una aplicación web Java EE• Estructura de directorios
9
/ Recursos estáticos y JSPParte pública accesible desde la web
/WEB-INF Configuración y clases JavaNo accesible desde la web
/WEB-INF/web.xml Fichero descriptor de despliegueConfiguración de la aplicación
/WEB-INF/classes Clases Java de nuestra aplicaciónFicheros .class (en estructura de paquetes)
/WEB-INF/lib Librerías que utiliza la aplicaciónFicheros JAR
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Contexto• Cada Aplicación Web es un contexto
• Se compone de la estructura de directorios anterior
• A cada contexto se le asigna una ruta dentro del servidor• Por ejemplo, si asignamos la ruta aplic al contexto
correspondiente a la siguiente estructura:
/pagina.htm/WEB-INF/web.xml
• Podremos acceder a nuestra página con
http://localhost:8080/aplic/pagina.htm
10
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Ficheros WAR• Podemos empaquetar las Aplicaciones Web en ficheros WAR
(Archivos de Aplicación Web)
• Se utiliza la misma herramienta JAR para crearlos (sólo utilizamos una extensión distinta)• Contendrá la estructura de directorios completa del contexto
• Es un estándar de los servidores de aplicaciones Java EE
• Se utiliza para distribuir aplicaciones web• Podremos copiar el fichero WAR directamente al servidor web
para poner en marcha la aplicación
11
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Creación de un WAR• Dada la siguiente estructura de carpetas:
• Entrar en el directorio web/ejemplo y teclear
• El raíz del WAR deberá contener index.html y WEB-INF
12
web/ejemplo/ index.html WEB-‐INF/ web.xml classes/ ClaseServlet.class
jar cMvf ejemplo.war *
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
La aplicación manager de Tomcat• Nos permite gestionar las aplicaciones
• Listar aplicaciones desplegadas• Desplegar/replegar una aplicación• Rearrancar/parar una aplicación
• Para poder usarlo es necesario tener el rol “manager-gui”• Si no existe ningún usuario con dicho rol, podemos crearlo en el tomcat-users.xml
13
<role rolename="manager-‐gui"/><user username="admin" password="JavaEE" roles="manager-‐gui"/>
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Acceso al manager• Interfaz Web
http://localhost:8080/manager/html
14
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Eclipse Web Tools Project (WTP)
• Es un plugin de Eclipse que gestiona aplicaciones web como proyectos autointegrados
• Incluido con la versión JavaEE de Eclipse
• Podremos:• Gestionar el servidor web en que desplegar• Crear y desarrollar la aplicación web• Desplegar y probar la aplicación en el servidor
15
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Añadir un servidor web• File > New > Servers > Server
16
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Gestión de los servidores• Botón derecho sobre el servidor en la vista Servers
• Tenemos opciones para pararlo, reanudarlo, reiniciarlo, etc
17
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Crear proyecto de aplicación web• File > New Project ... > Web > Dynamic Web Project
18
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Estructura del proyecto
• En los siguientes pasos del asistente, elegimos qué carpetas crear y la ruta del contexto que tendrá la aplicación
• Carpetas creadas por defecto:• src: fuentes Java. Se compilarán y se copiarán al directorio WEB-INF/classes del producto de la construcción
• WebContent: esqueleto aplicación web (con WEB-INF y sus subcarpetas)
• El resto de carpetas las crearemos nosotros a mano
19
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Despliegue de la aplicación
• La aplicación se desplegará sobre el servidor que tengamos asignado en la vista Servers.
• Pulsamos botón derecho sobre el proyecto web y elegimos Run As > Run on Server• En la siguiente pantalla podemos elegir sobre qué servidor de la
vista de Servers ejecutarlo, si tuviésemos más de uno configurado.
• Repetiremos la operación tras cada cambio que queramos comprobar en la aplicación.
20
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Configuración de Tomcat• Estructura lógica de server.xml
21
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Componentes principales
• Server: el propio Tomcat. Sólo hay una instancia de este elemento
• Listener: monitorizan los contenedores web• GlobalNamingResources: mapean variables JNDI• Service: conjunto de conectores que reciben peticiones y un
engine que las procesa• Connector: acepta ciertas peticiones y las pasa al engine• Engine: representa al contenedor web (p. ej. Catalina)• Host: representa al host o host virtual (p.ej. localhost)• Context: representa una aplicación web en un host
22
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Configuración del contexto• Dentro del server.xml
• Desaconsejado, hay que tocar la configuración del servidor entero
• Para la aplicación individualmente• Dentro de una carpeta META-INF, en un archivo llamado context.xml
23
<Context path="/aplic" docBase="MiAplic"> ...</Context>
Directorio donde se almacena la aplicación en el servidor (relativo a webapps)
Ruta a la que se mapea el contexto dentro del host:http://localhost:8080/aplic
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Valves• Componentes que se insertan en el ciclo de procesamiento de
la petición para controlar varios aspectos:• Registro de accesos• Filtro de hosts o de IPs• Volcado de la petición• …
• Clases Java que el usuario podría implementar
• Se pueden poner a distintos niveles: engine, host o context• O sea, para todas las aplicaciones o para una sola
24
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Ejemplos de valves• Log de accesos
• Filtro de IPs
25
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1" />
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Pooling de conexiones en Tomcat• Mediante ficheros de configuración podemos dejar definida una
batería de conexiones a BD• Estas conexiones se abrirán al arrancar el servidor, aunque
todavía no se necesiten
• Cada petición de acceso a BD de las aplicaciones irá cogiendo una de las conexiones libres y marcándola como “ocupada”. Cuando la cierre, en realidad simplemente la marcará como “libre”• Merece la pena “malgastar” conexiones abiertas con la BD, ya que
el proceso de abrirlas/cerrarlas es costoso en tiempo• De esta forma aseguramos poder atender un máximo determinado
de peticiones concurrentes (el tamaño del pool)
26
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Configuración del pooling• Definir un fichero context.xml en la carpeta WebContent/META-INF de nuestro proyecto
• Deberemos copiar el driver de la base de datos en el directorio de librerías de Tomcat
27
<?xml version="1.0" encoding="ISO-‐8859-‐1"?><Context> <Resource name="PruebaDS" type="javax.sql.DataSource" auth="Container" username="prueba" password="prueba" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/prueba" maxActive="20" maxIdle="5" maxWait="10000"/></Context>
Experto Universitario Java Enterprise
Componentes web © 2012-2013 Depto. Ciencia de la Computación e IA Aplicaciones Web Java
Acceso a la base de datos• La clase DataSource es la que hace transparente el pooling,
permitiéndonos usar getConnection/close como en JDBC sin pooling
• Se usa el API JNDI para acceder al DataSource por su nombre simbólico
28
//Obtener el contexto JNDIContext initCtx = new InitialContext();//Obtener el recurso con su nombre lógico (JNDI)DataSource ds = (DataSource) initCtx.lookup("java:comp/env/PruebaDS");//A través del DataSource podemos obtener una conexión con la BDConnection conn = ds.getConnection();//A partir de aquí trabajaríamos como es habitual en JDBC...
Experto Universitario Java Enterprise
¿Preguntas...?