Sesion 3. desarrollo de aplicaciones jee

Post on 18-Dec-2014

287 views 1 download

description

J2EE

Transcript of Sesion 3. desarrollo de aplicaciones jee

ene-09 alb@uniovi.es 1

Desarrollo de aplicaciones JEE

ene-09 alb@uniovi.es 2

Contenidos

ene-09 alb@uniovi.es 3

Plataformas de la tecnología Java y Java EE

Requisitos de las aplicaciones de empresa

ene-09 alb@uniovi.es 4

Tecnologías de infraestructura en aplicaciones de empresa

Requisitos de las aplicaciones de empresa

ene-09 alb@uniovi.es 5

Elementos de la tecnología Java EE

Requisitos de las aplicaciones de empresa

ene-09 alb@uniovi.es 6

Función de las API de Java EE

Requisitos de las aplicaciones de empresa

ene-09 alb@uniovi.es 7

Contenedores Java EE

Requisitos de las aplicaciones de empresa

ene-09 alb@uniovi.es 8

Separación de lógica de negocio y servicios

Requisitos de las aplicaciones de empresa

ene-09 alb@uniovi.es 9

Servicios Java EE: categorías

� De implementación:� Persistencia� Transacciones� Seguridad

� API:� Asignación de nombres� Mensajería� Conectores

� Inherentes:� Ciclo de vida� Subprocesos (threading)� Comunicación con

objetos remotos, como RMI y CORBA

� Del fabricante:� Capacidad de ampliación� Fail over� Balanceo de carga

API y servicios de la plataforma Java EE

Configurados en XML o con annotations Usados desde código

ene-09 alb@uniovi.es 10

Servicios Java EE

API y servicios de la plataforma Java EE

ene-09 alb@uniovi.es 11

Arquitectura de N capas

Capas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 12

JEE y las N capasCapas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 13

Arquitectura de N capas

Capas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 14

Variantes en la arquitectura de N capas en JEE

� Centrada en la web� Combinada basada en la web y en componentes EJB� arquitectura centrada en componentes EJB

� Aplicaciones interempresariales (B2B)� Aplicaciones de servicios web

Capas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 15

Arq. centrada en la web

Capas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 16

Arq. centrada en EJB

Capas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 17

Arquitectura B2B

Capas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 18

Arq. de servicios Web

Capas y arquitecturas de la plataforma Java EE

ene-09 alb@uniovi.es 19

Catálogo de patrones Java EE

Patrones Java EE

ene-09 alb@uniovi.es 20

Algunos patrones en Java EEPatrones Java EE

ene-09 alb@uniovi.es 21

Contenidos

ene-09 alb@uniovi.es 22

Componentes Java EE

� Componente: A menudo una agrupación de clases e interfaces que implementan una unidad autónoma de funciones.

� Tipos de componentes JEE:� Servlets� JSP (java servlet pages)� Beans de sesion� Clases entidad� Beans de mensajes

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 23

Características de los componentes Java EE

� Estado y propiedades� Encapsulación en un contenedor� Capacidad para interacciones de componentes locales y distribuibles

� Transparencia de ubicación� Obtención de referencias a componentes a través de un sistema de nombres

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 24

Estado y propiedades de componentes

� Estado: Capacidad del componente para almacenar información entre invocaciones del mismo cliente:� Con estado� Sin estado

� Ventaja técnica para mayor clusterización

� Propiedades:� Característica visible de un componente:

� En Java pares getters y setters

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 25

Interfaces como contratos

� Encapsulación: ejecución dentro de un contenedor. � Independencia del entorno

� Interfaces como contratos: Los componentes interactúan solo través de sus interfaces� Interface java

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 26

Interfaces como contratos

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 27

Conexiones remotas y locales

Principios de desarrollo basado en componentes

Conexiones remotas(diversas tecnologías)

Conexiones locales

ene-09 alb@uniovi.es 28

RMI, remote methodinvocation

� Marshalling y unmarshalling� Transmisión de excepciones� Transmisión del contexto de seguridad� Transmisión del contexto de transacción

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 29

Implicaciones de invocación remota

� Cambio de semántica:� Paso por valor (remotas)� Paso por referencia (locales)

� Marshalling y unmarshalling� Sobrecarga grande (10/1)

� Acceso remoto proporciona transparencia de ubicación

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 30

Servicios de nombres en el modelo de componentes

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 31

Uso del API JNDI en JEE

Principios de desarrollo basado en componentes

Código a ejecutar en la parte cliente

Configuración en cliente externo para localizar el servidor JNDI

ene-09 alb@uniovi.es 32

Uso del API JNDI en JEE

El registro JNDI mantiene referencias a los beans que sirve el contenedor

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 33

Tipos de objetos retornados por JNDI

� Conexiones a bases de datos relacionales� Conexiones a servicios de mensajería� Destinos de mensajes� Variables de entorno de componentes� Conexiones a sistemas heredados compatibles con adaptadores de recursos

Necesario hacer un cast

ene-09 alb@uniovi.es 34

EJBContext para localizar componentes

Principios de desarrollo basado en componentes

EJBContext: contexto JNDI especializado para localizar ejb en java:comp/env

ene-09 alb@uniovi.es 35

Inyección de dependencias en vez de JNDI

� El contenedor por medio de reflectividad interviene el código en el arranque del contenedor

Principios de desarrollo basado en componentes

ene-09 alb@uniovi.es 36

Comparación entre comunicación síncrona y asíncrona

� Síncrona:� Semántica petición-respuesta� El llamador bloquea en espera mientras el llamado resuelve

� Asíncrona:� Semántica petición-notificación� El llamador no bloquea en espera� Reduce el acoplamiento

Modelo de comunicación asíncrona

ene-09 alb@uniovi.es 37

Interacción asíncrona de componentes

Modelo de comunicación asíncrona

ene-09 alb@uniovi.es 38

Ventajas e inconvenientes de las interacciones asíncronas

� Ventajas:� Reducen acoplamiento entre componentes� Mejor rendimiento de máquinas en operaciones largas

� Inconvenientes:� Infraestructura más compleja

� Servidores, buffers, notificaciones

� Generan más tráfico de red ¿?

Modelo de comunicación asíncrona

ene-09 alb@uniovi.es 39

Roles en JEE

Desarrollo de aplicaciones Java EE

ene-09 alb@uniovi.es 40

Fases de desarrollo

� Diseño� Codificación� Creación de descriptores de implementación

� Empaquetado� Ensamblaje� Despliegue

Desarrollo de aplicaciones Java EE

ene-09 alb@uniovi.es 41

Ensamblado de EAR

Desarrollo de aplicaciones Java EE

ene-09 alb@uniovi.es 42

Opciones para automatizar el empaquetado y el despliege

� Herramientas específicas� Makefile� Apache ANT � muy usada en Java

� Fichero build.xml con instrucciones� Solución universal� Ver ejemplo

� IDE: � Eclipse, Netbeans

Comparación entre opciones de desarrollo

ene-09 alb@uniovi.es 43

Sistemas de control de código fuente

Comparación entre opciones de desarrollo

ene-09 alb@uniovi.es 44

Configuración y empaquetado

� Archivos de almacenamiento web(WAR)

� Archivos de almacenamiento Java (JAR)� Archivos de almacenamiento de recursos (RAR)

� Archivos de almacenamiento empresariales (EAR)

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 45

Archivos WEB

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 46

Creación manual de .WAR

2008-2009 46DASDI

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 47

Archivos JAR

� Contienen módulos EJB� Clases� Interfaces� Descriptores de despliege

� Otros recursos

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 48

Ejemplo estructura EJB-JAR

2008-2009 48DASDI

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 49

Archivos de recursos (RAR)

� Componente de más bajo nivel integrado en el framework JEE� Manipulación de Transacciones, Seguridad� Llamadas nativas, manipulación de hilos, etc

� Adaptadores a otros sistemas, etc

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 50

Archivos EAR

� Archivo que contiene todas las capas de la aplicación y todos los subcomponentes

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 51

Descriptores de despliege

� Modo declarativo de describir las interacciones entre componentes y entre componentes y sus contenedores mediante el uso de archivos XML

� En Java EE 5, los descriptores de implementación son optativos. Se pueden utilizar anotaciones en el código.

� Los descriptores de implementación, de haberlos, anulan las anotaciones en el código.

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 52

Ejemplo ejb-jar.xml

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 53

Estructura application.xml

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 54

Descriptores específicos

� Para cada contenedor concreto� Se especifican las características propias de ese contendor

� Cada contendor es distinto� En un empaquetado se pueden añadir muchos descriptores distintos

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 55

Ejemplo servidor Sun Java System

Configuración y empaquetado de aplicaciones JEE

ene-09 alb@uniovi.es 56

Contenidos

ene-09 alb@uniovi.es 57

Arquitectura de aplicaciones Java EE centrada en la web

Función de los componentes web en una aplicación Java EE

ene-09 alb@uniovi.es 58

Arquitectura de aplicaciones Java EE centrada en EJB

Función de los componentes web en una aplicación Java EE

ene-09 alb@uniovi.es 59

Protocolo HTTP

Modelo de petición-respuesta de HTTP

ene-09 alb@uniovi.es 60

Tipos de peticiones HTTP

Un navegador puede enviar la información al servidor de varias formas:

� GET: Paso de parámetros en la propia URL de acceso al servicio o recurso del servidor. Método “doGet” del servlet

� POST: Lo mismo que GET pero los parámetros no van en la línea de URL sino en otra línea a parte. El manejo es idéntico. Método “doPost” del servlet.

� PUT, …

Modelo de petición-respuesta de HTTP

ene-09 alb@uniovi.es 61

Peticiones GET y POST

� Get: datos en query string

� Post: datos en cuerpo de la petición

Modelo de petición-respuesta de HTTP

Contenido del paquete HTTP

ene-09 alb@uniovi.es 62

Respuesta devuelta por el servidor

� Entre las cabeceras de respuesta:� Resultado de la petición (status-code)

� MIME type de los datos� Codificación estándar de los tipos de datos� Página HTML: text/html� Documento XML: text/xml� Imagen en formato JPEG: image/jpeg

Modelo de petición-respuesta de HTTP

200 – OK400 – Bad Request401 – Unauthorized403 – Forbidden404 – Not Found. . .

ene-09 alb@uniovi.es 63

HolaMundo Servlet

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 64

Ejemplo de página JSP

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 65

JSP: Proceso de compilación

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 66

Ejemplo: de JSP a Servlet(Tomcat)

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 67

JSP a

Servlet.service()

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 68

Servlet API

ene-09 alb@uniovi.es 69

Servlets: Jerarquía

� No es habitual implementar Servletdirectamente

� Heredamos de HttpServlet

ene-09 alb@uniovi.es 70

Administración y ciclo de vida

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 71

Método service()

� Validar los datos de formulario.� Actualizar el modelo de datos de la aplicación.

� Reunir datos del modelo que va a representarse.

� Representar los datos en HTML o pasar la petición y los datos a otro componente para que los represente.

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 72

Combinación de servlets y componentes JSP

� Lo más habitual es usar combinaciones de servlets y JSP� JSP para generar la vista� Servlets para ejecutar la lógica del negocio

Comparación entre servlets y componentes JSP

ene-09 alb@uniovi.es 73

Concurrencia basada en hilos

Control de la concurrencia en componentes Web

ene-09 alb@uniovi.es 74

Consecuencias para el desarrollador

� Un único Servlet puede estar atendiendo múltiples peticiones simultáneas� Varios hilos ejecutándo service() � posibles problemas de concurrencia

� Precauciones al:� Usar variables de instancia� Usar variables de clase (static)� Acceder a recursos externos si ellos no soportan concurrencia

� Posible recurso:

Control de la concurrencia en componentes Web

ene-09 alb@uniovi.es 75

Asignación de alias y raíz de contexto web

� Formato general de URI

Control de la concurrencia en componentes Web

Nombre de la aplicación (el del paquete WAR o EAR)

Nombre del ficheroo alias de servlet que forma parte de la aplicación

bank.war

ene-09 alb@uniovi.es 76

Control de sesión de usuario� HTTP no tiene sesión, la aplicación web debe hacerse cargo de ella� Varias posibilidades tecnológicas

� Enviar datos de sesión al navegador� Cookies, URL rewriting, etc� Útil si hay pocos datos

� Mantener datos en el servidor� El servidor necesitará más memoria� Al navagador solo se envia token de sesión

� En JEE el contenedor se hace cargo de la gestión de la sesión y ofrece un API de gestión

Administración de sesiones

ene-09 alb@uniovi.es 77

Problemas de desarrollo de capas web

� HTTP es petición-respuesta� El servidor no se puede comunicar con el cliente� La respuesta debe incluir una actualización de la vista

� Aplicaciones con muchas “pantallas” tendrán muchos servlets y muchas URLs � difícil de gestionar

� JSP útil para presentar pero incómodo para lógica, servlets lo contrario

Complejidad de la capa Web

ene-09 alb@uniovi.es 78

Arquitectura Model 1

Secundino González Pérez

Complejidad de la capa Web

ene-09 alb@uniovi.es 79

Arquitectura Model 2

Secundino González Pérez

Complejidad de la capa Web

ene-09 alb@uniovi.es 80

Paradigma modelo-vista-controlador

Patrones de diseño en la capa Web

ene-09 alb@uniovi.es 81

Arquitectura 2 y MVC

Patrones de diseño en la capa Web

ene-09 alb@uniovi.es 82

Patrón Business-Delegate

Patrones de diseño en la capa Web

ene-09 alb@uniovi.es 83

Frameworks disponibles

� Generalizaciones del patrón MVC� Configuración XML del mapa de pantallas� Acciones, Vistas, etc

� Struts (1 y 2)� Tapestry� Spring MVC� WebWork� Java Server faces

Patrones de diseño en la capa Web

ene-09 alb@uniovi.es 84

Contenidos

ene-09 alb@uniovi.es 85

API genéricas y específicas de los protocolos

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 86

Método service()

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 87

Método service() en HTTPServlet

Separa la petición en función del método HTTP

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 88

Métodos de manejo de peticiones

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 89

Métodos de manejo de peticiones, código

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 90

HolaMundo Servlet

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 91

Configuración de servlets

� En fichero web.xml� Suministra información acerca del despliege de componentes en el contenedor� Página de inicio, mapes de Servlets y URLs, parámetros de configuración para servlets, recursos referenciados, etc

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 92

Ejemplo fichero web.xml

Conceptos básicos sobre el API de los servlets

ene-09 alb@uniovi.es 93

Utilización de las API de petición y respuesta

Utilización de las API de petición y respuesta

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException {

. . .}

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException {

. . .}

� Service (doGet y doPost) reciben interfaces instanciadas:� “HttpServletRequest” canal de entrada con información enviada por el usuario

� “HttpServletResponse” canal de salida (página web)

ene-09 alb@uniovi.es 94

HttpServeltRequest HttpServletResponse

serviceservice()()

Attributes[R/W/D]

Parameters[R]

Session[R/W/D]

Cookies [R]

ContentType[W]

Writer[W]

OutputStream[W]

Cookies[W]

Redirect[W]

WebContainer

Utilización de las API de petición y respuesta

Utilización de las API de petición y respuesta

ene-09 alb@uniovi.es 95

<form> y request.getParameter()

Utilización de las API de petición y respuesta

ene-09 alb@uniovi.es 96

Interfaz RequestDispatcher

� Deriva la petición a otro servlet o JSP para que complete el procesamiento� Es lo que permite que el JSP genera la vista y el servlet procese la lógica

Reenvío de control y transferencia de datos

ene-09 alb@uniovi.es 97

Métodos forward e include� forward():

� La salida del componente al que se transfiere el control se convierte en la salida del componente que lo ha llamado.

� El componente llamante no puede generar ninguna salida por sí solo.

� Suelen utilizarlo los controladores (servlets)� include():

� La salida del componente al que se transfiere el control se inserta en la salida que genere el componente llamante.

� Suelen utilizarlo las vistas (JSP)

Reenvío de control y transferencia de datos

ene-09 alb@uniovi.es 98

Transferencia de datos en la request

� Permite pasar datos desde un componente a otro de la cadena de procesamiento usando la request como almacén

Reenvío de control y transferencia de datos

En el JSP

ene-09 alb@uniovi.es 99

Gestión de la sesión por el contenedor

Administración de sesiones

ene-09 alb@uniovi.es 100

Interfaz HttpSession

Deprecated methods

Administración de sesiones

ene-09 alb@uniovi.es 101

Enlace de sesion y navegador

� Cookies� En servidor las inserta en cada respuesta al navegador

� Reescribiendo todas las URL generadas por el contenedor

Administración de sesiones

Rewrited as

ene-09 alb@uniovi.es 102

Cierre de sesión, timeout, nueva

Administración de sesiones

ene-09 alb@uniovi.es 103

Contenidos

ene-09 alb@uniovi.es 104

Presentación con JSP

� Ventajas:� Páginas hechas por diseñadores� Mejor interacción con herramientas de diseño

� Herramientas sencillas, editor de texto� Funcionan como servlets una vez compilados

� Posibilidad de ejecutar lógica (aunque es mejor que solo se dediquen a presentación)

Tecnología JSP como mecanismo de presentación

ene-09 alb@uniovi.es 105

Proceso de compilación

Tecnología JSP como mecanismo de presentación

ene-09 alb@uniovi.es 106

Elementos en las páginas JSP� Directivas

� Permiten condicionar la generación del código del servletgenerado

� Requisitos de buffering� Página de error para redirección, etc.

� Acciones� Etiquetas XML que invocan a clases que generan código de

salida para la petición� Acciones estándar� Acciones propietarias (Tag libs)

� Scriptlets� Permite insertar código java que será ejecutado en el

momento de la petición

Tecnología JSP como mecanismo de presentación

ene-09 alb@uniovi.es 107

Elementos en las páginas JSP

Creación de páginas JSP

ene-09 alb@uniovi.es 108

Formas sintácticas de las etiquetas JSP

Creación de páginas JSP

ene-09 alb@uniovi.es 109

Directivas JSP� Las directivas son mensajes al contenedor de JSP

� Ejemplos:ElementoElemento DescripciDescripcióónn

<%@ <%@ pagepage ... %>... %>

Permite importar clases Java, especificar el Permite importar clases Java, especificar el

tipo de la respuesta (tipo de la respuesta (““texttext//htmlhtml”” por omisipor omisióón), n),

etcetcééteratera<%@ <%@ includeinclude ... ...

%>%>Permite incluir otros ficheros antes de que la Permite incluir otros ficheros antes de que la

ppáágina sea traducida a un gina sea traducida a un servletservlet

<%@ <%@ taglibtaglib ... %>... %>

Declara una biblioteca de etiquetas con Declara una biblioteca de etiquetas con

accionesacciones personalizadas para ser utilizadas personalizadas para ser utilizadas

en la pen la pááginagina

Forma general: <%@ directive { attr=”value” }* %>

Creación de páginas JSP

ene-09 alb@uniovi.es 110

Directiva page

Creación de páginas JSP

ene-09 alb@uniovi.es 111

Directiva import

� Inserta el texto de otro recurso en tiempo de compilación

Creación de páginas JSP

ene-09 alb@uniovi.es 112

Ejemplo: directiva include

Creación de páginas JSP

ene-09 alb@uniovi.es 113

Elementos de “scripting”

ElementoElemento DescripciDescripcióónn

<% ... %><% ... %> ScriptletScriptlet. se usa para meter c. se usa para meter cóódigo Java dentrodigo Java dentro

<%= ... %><%= ... %>ExpresiExpresióónn. Permite acceder al valor devuelto por . Permite acceder al valor devuelto por

una expresiuna expresióón en Java e imprimirlo en OUTn en Java e imprimirlo en OUT

<%! ... %><%! ... %>DeclaraciDeclaracióónn. Usada para declarar variables y . Usada para declarar variables y

mméétodos en la clase correspondiente a la ptodos en la clase correspondiente a la pááginagina

<%<%---- …… ----%>%>

ComentarioComentario. Comentario ignorado cuando se . Comentario ignorado cuando se

traduce la ptraduce la páágina JSP en un gina JSP en un servletservlet..

(comentario en el HTML <!(comentario en el HTML <!---- commentcomment ��))

Creación de páginas JSP

ene-09 alb@uniovi.es 114

Ejemplo: expresión, saludo.jsp

expresión

Nota: Si se necesita usar los caracteres "%>" dentro de un scriptlet, hay que usar "%\>" y “<\%”

<%=

Creación de páginas JSP

ene-09 alb@uniovi.es 115

Ejemplo: scriptlet, saludo.jsp

<%

Creación de páginas JSP

ene-09 alb@uniovi.es 116

Ejemplo: declaración, saludo.jsp

<%!

Creación de páginas JSP

ene-09 alb@uniovi.es 117

JSP: Objetos predefinidos

� El código java incrustado en JSP tiene acceso a los mismos objetos predefinidos que tenían los servlets

� Aquí se llaman como sigue:�� requestrequest

�� responseresponse

�� pageContextpageContext

�� sessionsession

�� applicationapplication

�� outout

�� configconfig

Se puede acceder a

ellos directamente

desde los “scriptlets”

Creación de páginas JSP

ene-09 alb@uniovi.es 118

Acciones JSP

� Etiquetas XML que tienen procesamiento asociado

Procesamiento de datos de servlets

ene-09 alb@uniovi.es 119

<jsp:useBean

Procesamiento de datos de servlets

ene-09 alb@uniovi.es 120

<jsp:useBean id=“”

Procesamiento de datos de servlets

ene-09 alb@uniovi.es 121

Ambitos JSP

Procesamiento de datos de servlets

ene-09 alb@uniovi.es 122

Recuperando beans de la request

Procesamiento de datos de servlets

ene-09 alb@uniovi.es 123

Syntax

<%@ taglib ( uri=”tagLibraryURI” | tagdir=”tagDir” ) prefix=”tagPrefix” %>

Directiva taglib

Bibliotecas de etiquetas personalizadas

� Declara que la página usa una librería de tags (acciones)

� Identifica la librería por su URI� Le asocia un prefijo para usar en el código de la JSP

<%@ taglib uri=”http://www.mycorp/supertags” prefix=”super” %>...<super:doMagic>...</super:doMagic>

Alias definido en web.xml

ene-09 alb@uniovi.es 124

Ejemplo de uso de JSTL y EL

Bibliotecas de etiquetas personalizadas

ene-09 alb@uniovi.es 125

Contenidos

ene-09 alb@uniovi.es 126

Tipos de EJB� Además de los componentes EJB, el contenedor EJB

también pueden contener clases entidad JPA y otras clases auxiliares y de utilidad general.

Función de los componentes EJB

ene-09 alb@uniovi.es 127

Solución en capas

ene-09 127

DAO Factory

ProcsFacade

Service Interface

Action

Action

Action

Action

Facade

Lógica PersistenciaPresentac.

Control

Persistence Interface

JDBC

Procs

Hibernate DAO

JDBC DAO

JPA DAO

Spring DAO

ModelModelModelProcs

Procs

Función de los componentes EJBSession Beans

implementan el patrón Fachada

Clases Java implementan el modelo del dominio

ene-09 alb@uniovi.es 128

Capas de EJBs

Función de los componentes EJB

ene-09 alb@uniovi.es 129

Interfaces Context

� EJBContext� SessionContext� MessageContext

� Permiten al componente EJB interaccionar con el contenedor� Seguridad� Transacciones� Búsquedas JNDI

Función de los componentes EJB

ene-09 alb@uniovi.es 130

Función del contenedor EJB

Análisis del modelo de componentes EJB

ene-09 alb@uniovi.es 131

Objetos EJB y proxies

� Intercepta las llamadas y toma el control

Clase que se programa

ene-09 131

EJBObject

ene-09 alb@uniovi.es 132

Vistas de cliente locales y distribuidas

ene-09 alb@uniovi.es 132

Conexión local

Interfaz local

EJB Container

ene-09 alb@uniovi.es 133

Vistas de cliente locales y distribuidasene-09 alb@uniovi.es 133

Conexión remotaInterfaz remota

EJB Container

ene-09 alb@uniovi.es 134

Invocación de stateless: cliente

� Este código se ejecuta en otra máquina (JVM)

� El cliente necesita acceso a la implementación del stub

� El stub se obtiene de un registro JNDI

ene-09 134

ene-09 alb@uniovi.es 135

Servlet con referencia un beande sesión remoto sin estado� La referencia se guarda en atributo de

instancia� El bean staless es concurrente (thread safe)

� Se inicializa en el init()

Llamada a EJB desde servlets

ene-09 alb@uniovi.es 136

Servlet con referencia a través de anotaciones� Inyección de referencias

� Solo es posible en componentes gestionados por el contenedor

� No hace falta contexto ni búsqueda JNDI.� El contenedor asigna un valor a la variable de la referencia bankMgr cuando se instancia el servlet.

� La inicialización no genera excepciones.

Llamada a EJB desde servlets

ene-09 alb@uniovi.es 137

Contenidos

ene-09 alb@uniovi.es 138

Mantenimiento del estado

� Capa de usuario (programa cliente)� Trasiego de datos

� Capa Web� En HttpSession

� Capa de negocio (EJB)� En EJBs con estado

� Capa de base de datos

Comparación de comportamientos con y sin estado

� Carrito de la compra� Datos en varias páginas

ene-09 alb@uniovi.es 139

Beans sin estado

� El bean no retiene información del cliente.� Entre invocaciones es posible que un cliente no obtenga la misma instancia de bean de sesión.

� Una misma instancia de bean de sesión puede manejar cualquier número de solicitudes de cliente. � Mejora de rendimiento.

Características de los beans sin estado

ene-09 alb@uniovi.es 140

Beans sin estado

� Cuidado con los atributos de instancia

Características de los beans sin estado

ene-09 alb@uniovi.es 141

Beans con estado

Características de los beans con estado

ene-09 alb@uniovi.es 142

Adaptación de una clase Java a EJB sin sesión

� Declarar interfaz de negocio

� Definir clase de implementación

Creación de beans de sesión

anotaciones

ene-09 alb@uniovi.es 143

Interfaces locales y remotas

Creación de beans de sesión

La implementación se puede anotar con @Remote pero no con @Local y @Remote a la vez

Un implementación puede serremota y local pero las anotaciones van en cada interfaz

ene-09 alb@uniovi.es 144

Interfaces locales y remotas

Creación de beans de sesión

� La implementación se puede anotar con @Remotepero no con @Local y @Remote a la vez

� Un implementación puede ser remota y local pero las anotaciones van en cada interfaz

ene-09 alb@uniovi.es 145

Requisitos de la clase de implementación

� pública, no debe ser final ni abstracta� Constructor público que no acepte parámetros.� El contenedor utiliza este constructor para crear instancias de la clase de bean de sesión.

� No debe definir el método finalize.

Creación de beans de sesión

ene-09 alb@uniovi.es 146

Todas las anotaciones

� Tipo de bean� @Stateless, @Statefull

� Tipo de acceso� @Remote, @Local

� Cierre de sesión (en Statefull)� @Remove

� Acceso a recursos desde el EJB� @EJB, @Resource

� Ciclo de vida� @PostConstruct, @PreDestroy, � (Sólo statefull) @PostActivate, @PrePassivate

Creación de beans de sesión

ene-09 alb@uniovi.es 147

Ciclo de vida de session beanssin estado

Creación de beans de sesión

ene-09 alb@uniovi.es 148

Ciclo de vida de session beanscon estado

Creación de beans de sesión

ene-09 alb@uniovi.es 149

Objeto SessionContext� Proporciona acceso al EJBObject (al contenedor)� Entorno de seguridad� Información sobre el control de la transacción� Acceso a JNDI

Creación de beans de sesión

ene-09 alb@uniovi.es 150

Metadatos de despliegue

� En EJB 3.0: anotaciones y/o xml� Con anotaciones no es necesario el xml� Si están presentes los dos, el xml revoca las configuraciones de anotaciones

� Descriptores JEE:� Web: web.xml� EJB: ejb-jar.xml� Aplicaciones completas: application.xml

Empaquetado y despliegue de beans de sesión

ene-09 alb@uniovi.es 151

Ejemplo de ejb-jar.xml

Empaquetado y despliegue de beans de sesión

ene-09 alb@uniovi.es 152

Empaquetado

� Web: <nombre>.war� EJB: <nombre>.jar

� Archivo JAR nomal� Descriptor ejb-jar.xml en /META-INF

� Aplicaciones: <nombre>.ear� Contiene WAR + JAR� Descriptor application.xmlen /META-INF

Empaquetado y despliegue de beans de sesión

ene-09 alb@uniovi.es 153

Posibles clientes

� Otro EJB de sesion� Un servlet (o JSP compilado)� Clase Java normal

� ¿Cómo obtener una referencia al EJB?� Depende de si el cliente se ejecuta en un contenedor o no (si es EJB/servlet o clase normal)

Creación de un cliente bean de sesión

ene-09 alb@uniovi.es 154

Con servicios de contenedor

� Servlet o EJB local� El contenedor inyecta la referencia

Creación de un cliente bean de sesión

ene-09 alb@uniovi.es 155

Con servicios de contenedor

� Servlet o EJB remoto (en otro contenedor)

� Búsqueda JNDI

Creación de un cliente bean de sesión

En ejb-jar.xmlo web.xml

ene-09 alb@uniovi.es 156

Sin servicios de contenedor

� Clase Java (local o remota)� Se deben usar los servicios JNDI

Creación de un cliente bean de sesión

ene-09 alb@uniovi.es 157

Contenidos

ene-09 alb@uniovi.es 158

Persistencia

� Necesidad de que los datos manejados sobrevivan tras la ejecución a del programa� Muchas técnicas y tecnologías (ficheros, serialización, bases de datos, etc)

� JPA: especificación de un mapeadorobjeto/relacional

API de persistencia de Java

ene-09 alb@uniovi.es 159

Mapeador ORM

� Diseño e implementación con OO pero persistencia en BDD relacional� Diferentes paradigmas (diferencias estructurales, dinámicas, etc)

� Se busca tener persistencia automática y (casi) transparente� Los objetos son persistentes (en BDDR) sin apenas programación (mucho ahorro de código tedioso)

Mapeadores objeto/relacional

ene-09 alb@uniovi.es 160

Clases Entidad

� Representan conceptos del modelo de dominio

� Relacionadas con otros son el modelo del dominio� Conjunto de clases que representan los conceptos principales del problema (núcleo de la funcionalidad del programa)

� Otras clases de proceso (p.e: EJBs de sesión) las manipulan

Requisitos de una clase Entidad

ene-09 alb@uniovi.es 161

Clase Java como Entidad

� Deben seguir convenio Java Beans:� Setters y getters� Constructor sin parámetros� Recomendable

� Serializable� hashCode() y equals() redefinido

� Campo Identificador (clave)� Colecciones para asociaciones many

� Puede ser Set<T>, List<T>, Map<T> o Collection<T> (interfaces)

Requisitos de una clase Entidad

ene-09 alb@uniovi.es 162

ene-09 alb@uniovi.es 163

Modelo de dominio en código

Requisitos de una clase Entidad

ene-09 alb@uniovi.es 164

De clase a tabla

Requisitos de una clase Entidad

ene-09 alb@uniovi.es 165

Campos persistentes o propiedades

Requisitos de una clase Entidad

Acceso properties:se anotan los getters

Acceso field:se anotan los atributos

ene-09 alb@uniovi.es 166

Tipos Java persistentes

� Tipos primitivos Java� Envoltorios Java, como java.lang.Integer� java.lang.String� byte[] y Byte[]� char[] y Character[]� Los tipos serializables, incluidos, entre otros:

� java.util.Date, java.sql.TimeStamp� Cualquier otra clase del programa

Requisitos de una clase Entidad

ene-09 alb@uniovi.es 167

Conceptos básicos� Unidad de persistencia

� Conjunto de clases administradas por el ORM� Descriptor persistence.xml

� Administrador de entidades� Controla el ciclo de vida de la entidades: salvar, borrar,

recuperar, buscar (CRUD)� Contexto de persistencia

� Estado de la entidad con respecto al administrador de entidades

� Identidad persistence� Vínculo del objeto java con el registro en la tabla� Dentro de un contexto de persistencia un objeto java es

único� No confundir con la identidad java

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 168

Archivo persistence.xml

� Define las clases que forman parte de la persistence-unit (por su presencia)

� Especifica el DataSource

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 169

Ejemplo de uso de EntityManager

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 170ene-09 alb@uniovi.es 170

Estados de un objeto persistente JVM

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 171

Notificación de cambios de estado

� Especificación de métodos callback con anotaciones� @PrePersist� @PostPersist� @PreRemove� @PostRemove� @PreUpdate� @PostUpdate� @PostLoad

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 172

Estructura típica de archivo ejb-jar

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 173

API JPA

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 174

Consultas, lenguaje de consulta

� El EntityManager permite la creación de objetos Query� NativeQuery

� SQL nativo de la BDD

� NamedQuery� Consulta externalizada a fichero xml (orm.xml)

� Query� Expresadas en JPA-QL� Lenguaje de consultas OO independiente de la BDD

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 175

Ejemplo de Queries

Ciclo de vida de las entidades

ene-09 alb@uniovi.es 176

Contenidos

ene-09 alb@uniovi.es 177

Transacciones ACID

� Es la demarcación de una unidad de trabajo

� JPA permite trabajar con varios API de transacciones� JSE JDBC� JTA� Declarativas (EJB)

Semántica transaccional

ene-09 alb@uniovi.es 178

Control de concurrencia

� Las trx ACID crean la ilusión de que cada usuario es único en la base de datos � aíslan a unos de otros

� El aislamiento tradicionalmente se consigue con bloqueos a nivel de fila, de rangos o de tabla:� De lectura (compartido)

� todos podemos leer pero nadie escribir� De escritura (exclusivo)

� nadie puede leer porque voy a escribir y nadie más puede escribir

� Las transacciones JEE en contendor pueden ser distribuidas

Semántica transaccional

ene-09 alb@uniovi.es 179

Control de la trx

� Programáticas: el programador se hace cargo de la gestión usando el JTA� Acceso a la trx en curso por JNDI

� Declarativas: se especifica para cada operación su comportamiento transaccional� El contendor se encarga de la gestión� Anotaciones o xml

Transacciones programáticas y declarativas

ene-09 alb@uniovi.es 180

Control usando JTA

� Acceso JNDI o anotacion

Controlar transacciones programáticas JTA

ene-09 alb@uniovi.es 181

Ejemplo de control de transacción

Controlar transacciones programáticas JTA

ene-09 alb@uniovi.es 182

Control por el contenedor

� El atributo de la trx controla el ciclo de vida de la transacción en curso� Required� RequiresNew� NotSupported� Supports� Mandatory� Never

Transacciones administradas por el contenedor

ene-09 alb@uniovi.es 183

Coordinador de transacciones

Transacciones administradas por el contenedor

ene-09 alb@uniovi.es 184

Control pesimista y optimista

ene-09 Alberto M.F.A. alb@uniovi.es 184

Lock Lock

ROLLBACK

Lock v1.0 v2.0 v1.0

ROLLBACK

En BDD ya no es v1.0

PESIMISTA OPTIMISTA

Bloqueo optimista y control de versiones

ene-09 alb@uniovi.es 185ene-09 Alberto M.F.A. alb@uniovi.es 185

Control optimista

� Diferencia entre trx de sistema y trx de aplicación

� El control optimista además permite detectar cambios en actualizaciones entre trx de sistema

La solución optimista es añadir versiersióónn a los objetos

Bloqueo optimista y control de versiones

ene-09 alb@uniovi.es 186ene-09 Alberto M.F.A. alb@uniovi.es 186

Versionado de objetos con campo versión

� Añadir información al objeto para poder detectar cambios entre el estado detached y persistent� Campo versión (un entero)� Timestamp (de la última modificación)

Bloqueo optimista y control de versiones

ene-09 alb@uniovi.es 187ene-09 Alberto M.F.A. alb@uniovi.es 187

Mapeado de campos

Sin get/set

JPA gestiona los campos versión de forma automática

Tipos válidos para versionado

!

Bloqueo optimista y control de versiones

ene-09 alb@uniovi.es 188

Excepciones JPA

ene-09 Alberto M.F.A. alb@uniovi.es 188

�Todas las excepciones JPA son fatales y dejan el contexto de persistencia inutilizado

�Todas las excepciones lanzadas por EntityManager provocan rollback()

�Todas las de Query tb, excepto NoResultException yNonUniqueResultException.

Todas NO chequeadas

Excepciones durante una transacción

ene-09 alb@uniovi.es 189

Chequeadas y no chequeadas

� No chequeadas provocan rollback� Las chequedas por sí solas no� Trx distribuidas:

� Otro agente puede provocar rollback y ya lo notificó � comprobar si la trx estámarcada para rollback

� Uso de EJBContext� getRollbackOnly� setRollbackOnly

Excepciones durante una transacción

ene-09 alb@uniovi.es 190

Contenidos

ene-09 alb@uniovi.es 191

Middleware orientado a mensajes (MOM)

� Permite conexiones desacopladas entre sistemas

� Facilita la integración entre sistemas de tecnologías dispares� Añaden una capa intermedia

� La interacción entre sistemas se basa en intercambio de mensajes (o eventos)

Tecnología del API JMS

ene-09 alb@uniovi.es 192

MOM como integrador

Tecnología del API JMS

Clientes de mensajería

Distribución de mensajes

ene-09 alb@uniovi.es 193

Tipos de clientes de mensajería

Se bloquea esperando la llegada de un mensaje

Tecnología del API JMS

ene-09 alb@uniovi.es 194

Arquitectura de mensajería punto a punto

� Cuando el consumidor recoge el mensaje se borra de la cola

� Puede haber múltiples consumidores, pero “el primero que llega se lo lleva”

� También pude haber múltiples productores enviando a la misma cola

Tecnología del API JMS

ene-09 alb@uniovi.es 195

Arquitectura de mensajería de publicación/suscripción

� El tema es como una lista de distribución

� El mensaje se conserva hasta que todos los suscritos lo consumen

Tecnología del API JMS

ene-09 alb@uniovi.es 196

Elementos del API JMS

Tecnología del API JMS

ene-09 alb@uniovi.es 197

Estructura de los mensajes

Tecnología del API JMS

ene-09 alb@uniovi.es 198

Diagrama de colaboración

Creación de un productor de mensajes de cola

ene-09 alb@uniovi.es 199

Ejem

plo

Creación de un productor de mensajes de cola

ene-09 alb@uniovi.es 200

Diagrama de colaboración

Creación de un consumidor de mensajes síncrono

ene-09 alb@uniovi.es 201

Ejem

plo

Creación de un consumidor de mensajes síncrono

ene-09 alb@uniovi.es 202

Método gestor del evento

Creación de un consumidor de mensajes asíncrono

ene-09 alb@uniovi.es 203

Creación de un consumidor de mensajes asíncrono

ene-09 alb@uniovi.es 204

EJB como clientes de mensajería

EJB como clientes de mensajería

ene-09 alb@uniovi.es 205

Contenidos

ene-09 alb@uniovi.es 206

MessageDriven Beans

� Son clientes asíncronos de mensajes� Implementan el interfaz MessageListener

� Desconectados de cliente

Introducción a los beans controlados por mensajes

ene-09 alb@uniovi.es 207

Ciclo de vida

Introducción a los beans controlados por mensajes

Posible interceptar los cambios de estado

@PostConstruct@PreDestroy

ene-09 alb@uniovi.es 208

Código ejemplo

Creación de un bean controlado por mensajes

ene-09 alb@uniovi.es 209

Creación de un bean controlado por mensajes

Filtra los mensajes que llegan

ene-09 alb@uniovi.es 210

Contenidos

ene-09 alb@uniovi.es 211

Servicios Web

� W3C: “sistema de software diseñado para permitir la interacción interoperable entre máquinas en una red”

� Características:� Independencia de plataforma (Hw + SO)� Uso de tecnologías Internet: XML, HTTP, etc� Interoperabilidad de programas: clientes y servidores escritos en cualquier lenguaje

� Invocación a servicios ofrecidos como procedimientos

Finalidad de los servicios web

ene-09 alb@uniovi.es 212

Servicios web como componentes remotos� Mismo paradigma que otras soluciones anteriores:� CORBA� RMI� RPC� DCOM

� Diferencia técnica: Se emplean tecnologías estándares abiertas Internet� XML, SOAP� HTTP, SMTP

Finalidad de los servicios web

ene-09 alb@uniovi.es 213

Comparación entre servicios web y EJB remotos

� La implementación del servicio websimilar a un EJB de sesión

� El registro JNDI podría ser el registro UDDI de los WS

� El protocolo de transporte HTTP en vez de RMI-IIOP

� Los datos se transfieren en XML (SOAP) en ves de serializados

Finalidad de los servicios web

ene-09 alb@uniovi.es 214

Requisitos de interoperabilidad

� Intercambio de mensajes HTTP y XML� Se necesita cerrar más las posibilidades

� SOAP � especificación XML para intercambio de invocaciones y respuestas

� WSDL � descripción “semántica” de los servicios ofrecidos (el interfaz)

� HTTP � métodos y cabeceras estandarizados

� UDDI � norma de publicación y búsqueda de servicios ofrecidos

Especificaciones de los servicios web

ene-09 alb@uniovi.es 215

Arquitectura de WS

Especificaciones de los servicios web

ene-09 alb@uniovi.es 216

Ejemplo mensajes SOAP

Especificaciones de los servicios web

Petición

Respuesta

ene-09 alb@uniovi.es 217

Ejemplo WSDL “hola mundo”

Especificaciones de los servicios web

Estructura general de documento WSDL

ene-09 alb@uniovi.es 218

APIs java para WS� JDOM� JAXP � Java API for XML procesing� JAXB � Java API for XML binding� JAX-RPC � Java API for RPC� JAXR � Java API for UDDI registry� SAAJ � SOAP API with Attachements� JAX-WS � Java API for WebServices

� API de más alto nivel � Usa todas las demás por debajo� Permite manejo de WS sin conocimientos de XML, SOAP, etc

APIs de Java relacionados con servicios web

-

+

Complejidad

ene-09 alb@uniovi.es 219

Contenidos

ene-09 alb@uniovi.es 220

Punto final un Servlet

Puntos finales servlet JAX-WS

web.xml

ene-09 alb@uniovi.es 221

Punto final un EJB

Puntos finales EJB JAX-WS

ene-09 alb@uniovi.es 222

Tipos de datos admitidos en JAX-WS

� Se pueden transferir tipos básicos a WS

� Tipos complejos deben marcados

Puntos finales EJB JAX-WS

ene-09 alb@uniovi.es 223

Desarrollo de clientes

� Es necesario disponer del WSDL

� A partir del archivo de especificación se pueden generar clases proxy� Las usa el cliente � Se encargan de localizar el servicio y realizar las conversiones Java�� SOAP

� También es posible generar el proxydinámicamente

Clientes de servicios Web

ene-09 alb@uniovi.es 224

Ejem

plo

Clientes de servicios Web

Cliente con proxy dinámico

Cliente con proxy estático

ene-09 alb@uniovi.es 225

Contenidos

ene-09 alb@uniovi.es 226

Conceptos de seguridad

� Autenticación� Asegurar la identidad del usuario

� Autorización� Verificar que tiene permiso para la operación que solicita

� Confidencialidad� Impedir el espionaje de datos en transporte

� Integridad� Detectar la corrupción de los mensajes en el transporte

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 227

Conceptos

� Autenticación y autorización pueden ser gestionados por JEE� No es aconsejable usar estrategias de seguridad programáticas � poco portables, poco maduras

� Confidencialidad e integridad conseguidas con un protocolo de transporte seguro� SSL (TLS)

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 228

Propagación del contexto de seguridad

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 229ene-09 Alberto M.F.A. 229

Seguridad para WEB (HTTPS)

� HTTPS = HTTP Secure� HTTP sobre un protocolo de transporte seguro� HTTP � SSL � TCP

� SSL también es conocido como TLS según IETF

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 230

SSL (o TLS)� El servidor tiene un certificado

� opcionalmente el cliente tiene el suyo� Permite intercambio seguro de datos (p.e. claves de sesión)

� Usa algoritmos de clave simétrica y asimétrica

� Ofrece:� Autentificación � Confidencialidad� Integridad

Del servidor siempre, del cliente si tiene certificado

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 231

Autenticación administrada por contenedor web

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 232

Especificación� En web.xmlweb.xml� Una colección de recursos (URLs) solo podrán ser accedidos por usuarios que actúen bajo determinado rol usando determinados métodos HTTP

� La autenticación para cada ámbito de seguridad (realm) se hará usando alguna de las técnicas establecidas por la especificación de servlets

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 233

web.xml

� Colección de recursos, roles y métodos

Si no hay método todos están protegidos

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 234

web.xml

� Roles

� Técnicas

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 235

Tipos de autenticación soportados

� BASIC� DIGEST� FORM� CLIENT-CERT

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 236

Autentificación por Formulario

� No es segura por sí sola, es necesario combinarla con HTTPs (SSL – Secure SocketLayer)

� Permite controlar la apariencia de la pantalla de login

� La pantalla de login es HTML estándar, sigue un convenio de nombres� Action: j_security_check� Login: j_username� Pass: j_password

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 237

Interacción con la infraestructura de seguridad� BDD de usuarios y roles

� El contenedor consulta los datos de una fuente directamente

� Tipos de fuentes y configuración dependen de la implementación del contenedor

� Base de datos (tablas: usuarios, roles)� Ficheros XML� Ficheros de propiedades� . . .

� Consultar documentación del contenedor

Seguridad administrada por el contenedor

ene-09 alb@uniovi.es 238

Usuarios y roles

Roles y responsabilidades del usuario

ene-09 alb@uniovi.es 239

Autorización basada en funciones en la capa EJB

Roles y responsabilidades del usuario

ene-09 alb@uniovi.es 240

Métodos de API

� Métodos en web:� getUserPrincipal y isUserInRole

� Métodos en EJB:� getCallerPrincipal y isCallerInRole

Utilización del API de seguridad

ene-09 alb@uniovi.es 241

API de seguridad de la capa web

Utilización del API de seguridad

ene-09 alb@uniovi.es 242

API de seguridad de la capa EJB

Utilización del API de seguridad

ene-09 alb@uniovi.es 243

Autenticar clientes de WS

� Mismo caso que el del navegador web� En el paquete HTTP debe ir la autenticación de usuario (sobre SSL)

� Si el WSDL está protegido el cliente debe tener una copia local

Seguridad HTTP y clientes JAX-WS