Componentes web - jtech.ua.es · batería de conexiones a BD • Estas conexiones se abrirán al...

29
Experto Universitario Java Enterprise Componentes web Sesión 1: Aplicaciones web Java © 2012-2013 Depto. Ciencia de la Computación e IA

Transcript of Componentes web - jtech.ua.es · batería de conexiones a BD • Estas conexiones se abrirán al...

Page 1: Componentes web - jtech.ua.es · 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

Experto Universitario Java Enterprise

Componentes web

Sesión 1: Aplicaciones web Java

© 2012-2013 Depto. Ciencia de la Computación e IA

Page 2: Componentes web - jtech.ua.es · 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

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

Page 3: Componentes web - jtech.ua.es · 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

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

Page 4: Componentes web - jtech.ua.es · 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

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

Page 5: Componentes web - jtech.ua.es · 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

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

Page 6: Componentes web - jtech.ua.es · 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

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

Page 7: Componentes web - jtech.ua.es · 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

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.

Page 8: Componentes web - jtech.ua.es · 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

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

Page 9: Componentes web - jtech.ua.es · 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

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

Page 10: Componentes web - jtech.ua.es · 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

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

Page 11: Componentes web - jtech.ua.es · 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

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

Page 12: Componentes web - jtech.ua.es · 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

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  *

Page 13: Componentes web - jtech.ua.es · 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

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"/>

Page 14: Componentes web - jtech.ua.es · 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

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

Page 15: Componentes web - jtech.ua.es · 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

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

Page 16: Componentes web - jtech.ua.es · 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

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

Page 17: Componentes web - jtech.ua.es · 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

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

Page 18: Componentes web - jtech.ua.es · 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

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

Page 19: Componentes web - jtech.ua.es · 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

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

Page 20: Componentes web - jtech.ua.es · 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

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

Page 21: Componentes web - jtech.ua.es · 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

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

Page 22: Componentes web - jtech.ua.es · 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

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

Page 23: Componentes web - jtech.ua.es · 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

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

Page 24: Componentes web - jtech.ua.es · 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

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

Page 25: Componentes web - jtech.ua.es · 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

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"  />

Page 26: Componentes web - jtech.ua.es · 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

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

Page 27: Componentes web - jtech.ua.es · 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

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>

Page 28: Componentes web - jtech.ua.es · 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

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...  

Page 29: Componentes web - jtech.ua.es · 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

Experto Universitario Java Enterprise

¿Preguntas...?