Download - Sesion 3. desarrollo de aplicaciones jee
![Page 3: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/3.jpg)
ene-09 [email protected] 3
Plataformas de la tecnología Java y Java EE
Requisitos de las aplicaciones de empresa
![Page 4: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/4.jpg)
ene-09 [email protected] 4
Tecnologías de infraestructura en aplicaciones de empresa
Requisitos de las aplicaciones de empresa
![Page 5: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/5.jpg)
ene-09 [email protected] 5
Elementos de la tecnología Java EE
Requisitos de las aplicaciones de empresa
![Page 8: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/8.jpg)
ene-09 [email protected] 8
Separación de lógica de negocio y servicios
Requisitos de las aplicaciones de empresa
![Page 9: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/9.jpg)
ene-09 [email protected] 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
![Page 14: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/14.jpg)
ene-09 [email protected] 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
![Page 22: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/22.jpg)
ene-09 [email protected] 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
![Page 23: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/23.jpg)
ene-09 [email protected] 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
![Page 24: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/24.jpg)
ene-09 [email protected] 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
![Page 25: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/25.jpg)
ene-09 [email protected] 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
![Page 26: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/26.jpg)
ene-09 [email protected] 26
Interfaces como contratos
Principios de desarrollo basado en componentes
![Page 27: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/27.jpg)
ene-09 [email protected] 27
Conexiones remotas y locales
Principios de desarrollo basado en componentes
Conexiones remotas(diversas tecnologías)
Conexiones locales
![Page 28: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/28.jpg)
ene-09 [email protected] 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
![Page 29: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/29.jpg)
ene-09 [email protected] 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
![Page 30: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/30.jpg)
ene-09 [email protected] 30
Servicios de nombres en el modelo de componentes
Principios de desarrollo basado en componentes
![Page 31: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/31.jpg)
ene-09 [email protected] 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
![Page 32: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/32.jpg)
ene-09 [email protected] 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
![Page 33: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/33.jpg)
ene-09 [email protected] 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
![Page 34: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/34.jpg)
ene-09 [email protected] 34
EJBContext para localizar componentes
Principios de desarrollo basado en componentes
EJBContext: contexto JNDI especializado para localizar ejb en java:comp/env
![Page 35: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/35.jpg)
ene-09 [email protected] 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
![Page 36: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/36.jpg)
ene-09 [email protected] 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
![Page 38: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/38.jpg)
ene-09 [email protected] 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
![Page 40: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/40.jpg)
ene-09 [email protected] 40
Fases de desarrollo
� Diseño� Codificación� Creación de descriptores de implementación
� Empaquetado� Ensamblaje� Despliegue
Desarrollo de aplicaciones Java EE
![Page 42: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/42.jpg)
ene-09 [email protected] 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
![Page 43: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/43.jpg)
ene-09 [email protected] 43
Sistemas de control de código fuente
Comparación entre opciones de desarrollo
![Page 44: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/44.jpg)
ene-09 [email protected] 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
![Page 46: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/46.jpg)
ene-09 [email protected] 46
Creación manual de .WAR
2008-2009 46DASDI
Configuración y empaquetado de aplicaciones JEE
![Page 47: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/47.jpg)
ene-09 [email protected] 47
Archivos JAR
� Contienen módulos EJB� Clases� Interfaces� Descriptores de despliege
� Otros recursos
Configuración y empaquetado de aplicaciones JEE
![Page 48: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/48.jpg)
ene-09 [email protected] 48
Ejemplo estructura EJB-JAR
2008-2009 48DASDI
Configuración y empaquetado de aplicaciones JEE
![Page 49: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/49.jpg)
ene-09 [email protected] 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
![Page 50: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/50.jpg)
ene-09 [email protected] 50
Archivos EAR
� Archivo que contiene todas las capas de la aplicación y todos los subcomponentes
Configuración y empaquetado de aplicaciones JEE
![Page 51: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/51.jpg)
ene-09 [email protected] 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
![Page 53: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/53.jpg)
ene-09 [email protected] 53
Estructura application.xml
Configuración y empaquetado de aplicaciones JEE
![Page 54: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/54.jpg)
ene-09 [email protected] 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
![Page 55: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/55.jpg)
ene-09 [email protected] 55
Ejemplo servidor Sun Java System
Configuración y empaquetado de aplicaciones JEE
![Page 57: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/57.jpg)
ene-09 [email protected] 57
Arquitectura de aplicaciones Java EE centrada en la web
Función de los componentes web en una aplicación Java EE
![Page 58: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/58.jpg)
ene-09 [email protected] 58
Arquitectura de aplicaciones Java EE centrada en EJB
Función de los componentes web en una aplicación Java EE
![Page 60: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/60.jpg)
ene-09 [email protected] 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
![Page 61: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/61.jpg)
ene-09 [email protected] 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
![Page 62: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/62.jpg)
ene-09 [email protected] 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. . .
![Page 65: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/65.jpg)
ene-09 [email protected] 65
JSP: Proceso de compilación
Comparación entre servlets y componentes JSP
![Page 66: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/66.jpg)
ene-09 [email protected] 66
Ejemplo: de JSP a Servlet(Tomcat)
Comparación entre servlets y componentes JSP
![Page 69: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/69.jpg)
ene-09 [email protected] 69
Servlets: Jerarquía
� No es habitual implementar Servletdirectamente
� Heredamos de HttpServlet
![Page 70: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/70.jpg)
ene-09 [email protected] 70
Administración y ciclo de vida
Comparación entre servlets y componentes JSP
![Page 71: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/71.jpg)
ene-09 [email protected] 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
![Page 72: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/72.jpg)
ene-09 [email protected] 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
![Page 73: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/73.jpg)
ene-09 [email protected] 73
Concurrencia basada en hilos
Control de la concurrencia en componentes Web
![Page 74: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/74.jpg)
ene-09 [email protected] 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
![Page 75: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/75.jpg)
ene-09 [email protected] 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
![Page 76: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/76.jpg)
ene-09 [email protected] 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
![Page 77: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/77.jpg)
ene-09 [email protected] 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
![Page 78: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/78.jpg)
ene-09 [email protected] 78
Arquitectura Model 1
Secundino González Pérez
Complejidad de la capa Web
![Page 79: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/79.jpg)
ene-09 [email protected] 79
Arquitectura Model 2
Secundino González Pérez
Complejidad de la capa Web
![Page 83: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/83.jpg)
ene-09 [email protected] 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
![Page 85: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/85.jpg)
ene-09 [email protected] 85
API genéricas y específicas de los protocolos
Conceptos básicos sobre el API de los servlets
![Page 87: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/87.jpg)
ene-09 [email protected] 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
![Page 88: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/88.jpg)
ene-09 [email protected] 88
Métodos de manejo de peticiones
Conceptos básicos sobre el API de los servlets
![Page 89: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/89.jpg)
ene-09 [email protected] 89
Métodos de manejo de peticiones, código
Conceptos básicos sobre el API de los servlets
![Page 91: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/91.jpg)
ene-09 [email protected] 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
![Page 93: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/93.jpg)
ene-09 [email protected] 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)
![Page 94: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/94.jpg)
ene-09 [email protected] 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
![Page 95: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/95.jpg)
ene-09 [email protected] 95
<form> y request.getParameter()
Utilización de las API de petición y respuesta
![Page 96: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/96.jpg)
ene-09 [email protected] 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
![Page 97: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/97.jpg)
ene-09 [email protected] 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
![Page 98: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/98.jpg)
ene-09 [email protected] 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
![Page 101: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/101.jpg)
ene-09 [email protected] 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
![Page 104: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/104.jpg)
ene-09 [email protected] 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
![Page 106: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/106.jpg)
ene-09 [email protected] 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
![Page 109: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/109.jpg)
ene-09 [email protected] 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
![Page 111: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/111.jpg)
ene-09 [email protected] 111
Directiva import
� Inserta el texto de otro recurso en tiempo de compilación
Creación de páginas JSP
![Page 113: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/113.jpg)
ene-09 [email protected] 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
![Page 114: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/114.jpg)
ene-09 [email protected] 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
![Page 117: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/117.jpg)
ene-09 [email protected] 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
![Page 118: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/118.jpg)
ene-09 [email protected] 118
Acciones JSP
� Etiquetas XML que tienen procesamiento asociado
Procesamiento de datos de servlets
![Page 123: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/123.jpg)
ene-09 [email protected] 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
![Page 126: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/126.jpg)
ene-09 [email protected] 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
![Page 127: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/127.jpg)
ene-09 [email protected] 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
![Page 129: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/129.jpg)
ene-09 [email protected] 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
![Page 131: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/131.jpg)
ene-09 [email protected] 131
Objetos EJB y proxies
� Intercepta las llamadas y toma el control
Clase que se programa
ene-09 131
EJBObject
![Page 132: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/132.jpg)
ene-09 [email protected] 132
Vistas de cliente locales y distribuidas
ene-09 [email protected] 132
Conexión local
Interfaz local
EJB Container
![Page 133: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/133.jpg)
ene-09 [email protected] 133
Vistas de cliente locales y distribuidasene-09 [email protected] 133
Conexión remotaInterfaz remota
EJB Container
![Page 134: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/134.jpg)
ene-09 [email protected] 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
![Page 135: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/135.jpg)
ene-09 [email protected] 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
![Page 136: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/136.jpg)
ene-09 [email protected] 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
![Page 138: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/138.jpg)
ene-09 [email protected] 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
![Page 139: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/139.jpg)
ene-09 [email protected] 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
![Page 140: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/140.jpg)
ene-09 [email protected] 140
Beans sin estado
� Cuidado con los atributos de instancia
Características de los beans sin estado
![Page 142: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/142.jpg)
ene-09 [email protected] 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
![Page 143: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/143.jpg)
ene-09 [email protected] 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
![Page 144: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/144.jpg)
ene-09 [email protected] 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
![Page 145: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/145.jpg)
ene-09 [email protected] 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
![Page 146: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/146.jpg)
ene-09 [email protected] 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
![Page 149: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/149.jpg)
ene-09 [email protected] 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
![Page 150: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/150.jpg)
ene-09 [email protected] 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
![Page 152: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/152.jpg)
ene-09 [email protected] 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
![Page 153: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/153.jpg)
ene-09 [email protected] 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
![Page 154: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/154.jpg)
ene-09 [email protected] 154
Con servicios de contenedor
� Servlet o EJB local� El contenedor inyecta la referencia
Creación de un cliente bean de sesión
![Page 155: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/155.jpg)
ene-09 [email protected] 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
![Page 156: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/156.jpg)
ene-09 [email protected] 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
![Page 158: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/158.jpg)
ene-09 [email protected] 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
![Page 159: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/159.jpg)
ene-09 [email protected] 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
![Page 160: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/160.jpg)
ene-09 [email protected] 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
![Page 161: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/161.jpg)
ene-09 [email protected] 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
![Page 162: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/162.jpg)
ene-09 [email protected] 162
![Page 165: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/165.jpg)
ene-09 [email protected] 165
Campos persistentes o propiedades
Requisitos de una clase Entidad
Acceso properties:se anotan los getters
Acceso field:se anotan los atributos
![Page 166: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/166.jpg)
ene-09 [email protected] 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
![Page 167: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/167.jpg)
ene-09 [email protected] 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
![Page 168: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/168.jpg)
ene-09 [email protected] 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
![Page 170: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/170.jpg)
ene-09 [email protected] 170ene-09 [email protected] 170
Estados de un objeto persistente JVM
Ciclo de vida de las entidades
![Page 171: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/171.jpg)
ene-09 [email protected] 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
![Page 174: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/174.jpg)
ene-09 [email protected] 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
![Page 177: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/177.jpg)
ene-09 [email protected] 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
![Page 178: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/178.jpg)
ene-09 [email protected] 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
![Page 179: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/179.jpg)
ene-09 [email protected] 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
![Page 180: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/180.jpg)
ene-09 [email protected] 180
Control usando JTA
� Acceso JNDI o anotacion
Controlar transacciones programáticas JTA
![Page 181: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/181.jpg)
ene-09 [email protected] 181
Ejemplo de control de transacción
Controlar transacciones programáticas JTA
![Page 182: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/182.jpg)
ene-09 [email protected] 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
![Page 183: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/183.jpg)
ene-09 [email protected] 183
Coordinador de transacciones
Transacciones administradas por el contenedor
![Page 184: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/184.jpg)
ene-09 [email protected] 184
Control pesimista y optimista
ene-09 Alberto M.F.A. [email protected] 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
![Page 185: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/185.jpg)
ene-09 [email protected] 185ene-09 Alberto M.F.A. [email protected] 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
![Page 186: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/186.jpg)
ene-09 [email protected] 186ene-09 Alberto M.F.A. [email protected] 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
![Page 187: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/187.jpg)
ene-09 [email protected] 187ene-09 Alberto M.F.A. [email protected] 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
![Page 188: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/188.jpg)
ene-09 [email protected] 188
Excepciones JPA
ene-09 Alberto M.F.A. [email protected] 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
![Page 189: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/189.jpg)
ene-09 [email protected] 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
![Page 191: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/191.jpg)
ene-09 [email protected] 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
![Page 192: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/192.jpg)
ene-09 [email protected] 192
MOM como integrador
Tecnología del API JMS
Clientes de mensajería
Distribución de mensajes
![Page 193: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/193.jpg)
ene-09 [email protected] 193
Tipos de clientes de mensajería
Se bloquea esperando la llegada de un mensaje
Tecnología del API JMS
![Page 194: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/194.jpg)
ene-09 [email protected] 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
![Page 195: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/195.jpg)
ene-09 [email protected] 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
![Page 200: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/200.jpg)
ene-09 [email protected] 200
Diagrama de colaboración
Creación de un consumidor de mensajes síncrono
![Page 202: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/202.jpg)
ene-09 [email protected] 202
Método gestor del evento
Creación de un consumidor de mensajes asíncrono
![Page 206: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/206.jpg)
ene-09 [email protected] 206
MessageDriven Beans
� Son clientes asíncronos de mensajes� Implementan el interfaz MessageListener
� Desconectados de cliente
Introducción a los beans controlados por mensajes
![Page 207: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/207.jpg)
ene-09 [email protected] 207
Ciclo de vida
Introducción a los beans controlados por mensajes
Posible interceptar los cambios de estado
@PostConstruct@PreDestroy
![Page 209: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/209.jpg)
ene-09 [email protected] 209
Creación de un bean controlado por mensajes
Filtra los mensajes que llegan
![Page 211: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/211.jpg)
ene-09 [email protected] 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
![Page 212: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/212.jpg)
ene-09 [email protected] 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
![Page 213: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/213.jpg)
ene-09 [email protected] 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
![Page 214: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/214.jpg)
ene-09 [email protected] 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
![Page 216: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/216.jpg)
ene-09 [email protected] 216
Ejemplo mensajes SOAP
Especificaciones de los servicios web
Petición
Respuesta
![Page 217: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/217.jpg)
ene-09 [email protected] 217
Ejemplo WSDL “hola mundo”
Especificaciones de los servicios web
Estructura general de documento WSDL
![Page 218: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/218.jpg)
ene-09 [email protected] 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
![Page 222: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/222.jpg)
ene-09 [email protected] 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
![Page 223: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/223.jpg)
ene-09 [email protected] 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
![Page 224: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/224.jpg)
ene-09 [email protected] 224
Ejem
plo
Clientes de servicios Web
Cliente con proxy dinámico
Cliente con proxy estático
![Page 226: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/226.jpg)
ene-09 [email protected] 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
![Page 227: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/227.jpg)
ene-09 [email protected] 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
![Page 228: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/228.jpg)
ene-09 [email protected] 228
Propagación del contexto de seguridad
Seguridad administrada por el contenedor
![Page 229: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/229.jpg)
ene-09 [email protected] 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
![Page 230: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/230.jpg)
ene-09 [email protected] 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
![Page 231: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/231.jpg)
ene-09 [email protected] 231
Autenticación administrada por contenedor web
Seguridad administrada por el contenedor
![Page 232: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/232.jpg)
ene-09 [email protected] 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
![Page 233: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/233.jpg)
ene-09 [email protected] 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
![Page 235: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/235.jpg)
ene-09 [email protected] 235
Tipos de autenticación soportados
� BASIC� DIGEST� FORM� CLIENT-CERT
Seguridad administrada por el contenedor
![Page 236: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/236.jpg)
ene-09 [email protected] 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
![Page 237: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/237.jpg)
ene-09 [email protected] 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
![Page 239: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/239.jpg)
ene-09 [email protected] 239
Autorización basada en funciones en la capa EJB
Roles y responsabilidades del usuario
![Page 240: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/240.jpg)
ene-09 [email protected] 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
![Page 243: Sesion 3. desarrollo de aplicaciones jee](https://reader034.vdocuments.pub/reader034/viewer/2022042813/5497b3b7ac7959182e8b53ac/html5/thumbnails/243.jpg)
ene-09 [email protected] 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