Sesion 3. desarrollo de aplicaciones jee

1,275 views

Published on

J2EE

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,275
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
113
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sesion 3. desarrollo de aplicaciones jee

  1. 1. Desarrollo de aplicaciones JEE ene-09 alb@uniovi.es 1
  2. 2. Contenidos ene-09 alb@uniovi.es 2
  3. 3. Requisitos de las aplicaciones de empresa Plataformas de la tecnología Java y Java EE ene-09 alb@uniovi.es 3
  4. 4. Requisitos de las aplicaciones de empresa Tecnologías de infraestructura en aplicaciones de empresa ene-09 alb@uniovi.es 4
  5. 5. Requisitos de las aplicaciones de empresa Elementos de la tecnología Java EE ene-09 alb@uniovi.es 5
  6. 6. Requisitos de las aplicaciones de empresa Función de las API de Java EE ene-09 alb@uniovi.es 6
  7. 7. Requisitos de las aplicaciones de empresa Contenedores Java EE ene-09 alb@uniovi.es 7
  8. 8. Requisitos de las aplicaciones de empresa Separación de lógica de negocio y servicios ene-09 alb@uniovi.es 8
  9. 9. API y servicios de la plataforma Java EE Servicios Java EE: categorías De implementación: Inherentes: Persistencia Transacciones Seguridad Ciclo de vida Subprocesos (threading) Comunicación con objetos remotos, como RMI y CORBA API: Asignación de nombres Mensajería Conectores Configurados en XML o con annotations ene-09 Del fabricante: Usados desde código alb@uniovi.es Capacidad de ampliación Fail over Balanceo de carga 9
  10. 10. API y servicios de la plataforma Java EE Servicios Java EE ene-09 alb@uniovi.es 10
  11. 11. Capas y arquitecturas de la plataforma Java EE Arquitectura de N capas ene-09 alb@uniovi.es 11
  12. 12. Capas y arquitecturas de la plataforma Java EE JEE y las N capas ene-09 alb@uniovi.es 12
  13. 13. Capas y arquitecturas de la plataforma Java EE Arquitectura de N capas ene-09 alb@uniovi.es 13
  14. 14. Capas y arquitecturas de la plataforma Java EE 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 ene-09 alb@uniovi.es 14
  15. 15. Capas y arquitecturas de la plataforma Java EE Arq. centrada en la web ene-09 alb@uniovi.es 15
  16. 16. Capas y arquitecturas de la plataforma Java EE Arq. centrada en EJB ene-09 alb@uniovi.es 16
  17. 17. Capas y arquitecturas de la plataforma Java EE Arquitectura B2B ene-09 alb@uniovi.es 17
  18. 18. Capas y arquitecturas de la plataforma Java EE Arq. de servicios Web ene-09 alb@uniovi.es 18
  19. 19. Patrones Java EE Catálogo de patrones Java EE ene-09 alb@uniovi.es 19
  20. 20. Patrones Java EE Algunos patrones en Java EE ene-09 alb@uniovi.es 20
  21. 21. Contenidos ene-09 alb@uniovi.es 21
  22. 22. Principios de desarrollo basado en componentes 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 ene-09 alb@uniovi.es 22
  23. 23. Principios de desarrollo basado en componentes 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 ene-09 alb@uniovi.es 23
  24. 24. Principios de desarrollo basado en componentes 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 ene-09 alb@uniovi.es 24
  25. 25. Principios de desarrollo basado en componentes 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 ene-09 alb@uniovi.es 25
  26. 26. Principios de desarrollo basado en componentes Interfaces como contratos ene-09 alb@uniovi.es 26
  27. 27. Principios de desarrollo basado en componentes Conexiones remotas (diversas tecnologías) Conexiones remotas y locales ene-09 Conexiones locales alb@uniovi.es 27
  28. 28. Principios de desarrollo basado en componentes RMI, remote method invocation Marshalling y unmarshalling Transmisión de excepciones Transmisión del contexto de seguridad Transmisión del contexto de transacción ene-09 alb@uniovi.es 28
  29. 29. Principios de desarrollo basado en componentes 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 ene-09 alb@uniovi.es 29
  30. 30. Principios de desarrollo basado en componentes Servicios de nombres en el modelo de componentes ene-09 alb@uniovi.es 30
  31. 31. Principios de desarrollo basado en componentes Uso del API JNDI en JEE Código a ejecutar en la parte cliente Configuración en cliente externo para localizar el servidor JNDI ene-09 alb@uniovi.es 31
  32. 32. Principios de desarrollo basado en componentes Uso del API JNDI en JEE El registro JNDI mantiene referencias a los beans que sirve el contenedor ene-09 alb@uniovi.es 32
  33. 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 33
  34. 34. Principios de desarrollo basado en componentes EJBContext para localizar componentes EJBContext: contexto JNDI especializado para localizar ejb en java:comp/env ene-09 alb@uniovi.es 34
  35. 35. Principios de desarrollo basado en componentes Inyección de dependencias en vez de JNDI El contenedor por medio de reflectividad interviene el código en el arranque del contenedor ene-09 alb@uniovi.es 35
  36. 36. Modelo de comunicación asíncrona 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 ene-09 alb@uniovi.es 36
  37. 37. Modelo de comunicación asíncrona Interacción asíncrona de componentes ene-09 alb@uniovi.es 37
  38. 38. Modelo de comunicación asíncrona 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 ¿? ene-09 alb@uniovi.es 38
  39. 39. Desarrollo de aplicaciones Java EE Roles en JEE ene-09 alb@uniovi.es 39
  40. 40. Desarrollo de aplicaciones Java EE Fases de desarrollo Diseño Codificación Creación de descriptores de implementación Empaquetado Ensamblaje Despliegue ene-09 alb@uniovi.es 40
  41. 41. Desarrollo de aplicaciones Java EE Ensamblado de EAR ene-09 alb@uniovi.es 41
  42. 42. Comparación entre opciones de desarrollo 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 ene-09 alb@uniovi.es 42
  43. 43. Comparación entre opciones de desarrollo Sistemas de control de código fuente ene-09 alb@uniovi.es 43
  44. 44. Configuración y empaquetado de aplicaciones JEE 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) ene-09 alb@uniovi.es 44
  45. 45. Configuración y empaquetado de aplicaciones JEE Archivos WEB ene-09 alb@uniovi.es 45
  46. 46. Configuración y empaquetado de aplicaciones JEE Creación manual de .WAR ene-09 2008-2009 alb@uniovi.es DASDI 46 46
  47. 47. Configuración y empaquetado de aplicaciones JEE Archivos JAR Contienen módulos EJB Clases Interfaces Descriptores de despliege Otros recursos ene-09 alb@uniovi.es 47
  48. 48. Configuración y empaquetado de aplicaciones JEE Ejemplo estructura EJB-JAR ene-09 2008-2009 alb@uniovi.es DASDI 48 48
  49. 49. Configuración y empaquetado de aplicaciones JEE 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 ene-09 alb@uniovi.es 49
  50. 50. Configuración y empaquetado de aplicaciones JEE Archivos EAR Archivo que contiene todas las capas de la aplicación y todos los subcomponentes ene-09 alb@uniovi.es 50
  51. 51. Configuración y empaquetado de aplicaciones JEE 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. ene-09 alb@uniovi.es 51
  52. 52. Configuración y empaquetado de aplicaciones JEE Ejemplo ejb-jar.xml ene-09 alb@uniovi.es 52
  53. 53. Configuración y empaquetado de aplicaciones JEE Estructura application.xml ene-09 alb@uniovi.es 53
  54. 54. Configuración y empaquetado de aplicaciones JEE 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 ene-09 alb@uniovi.es 54
  55. 55. Configuración y empaquetado de aplicaciones JEE Ejemplo servidor Sun Java System ene-09 alb@uniovi.es 55
  56. 56. Contenidos ene-09 alb@uniovi.es 56
  57. 57. Función de los componentes web en una aplicación Java EE Arquitectura de aplicaciones Java EE centrada en la web ene-09 alb@uniovi.es 57
  58. 58. Función de los componentes web en una aplicación Java EE Arquitectura de aplicaciones Java EE centrada en EJB ene-09 alb@uniovi.es 58
  59. 59. Modelo de petición-respuesta de HTTP Protocolo HTTP ene-09 alb@uniovi.es 59
  60. 60. Modelo de petición-respuesta de HTTP 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, … ene-09 alb@uniovi.es 60
  61. 61. Modelo de petición-respuesta de HTTP Peticiones GET y POST Get: datos en query string Post: datos en cuerpo de la petición ene-09 Contenido del paquete HTTP alb@uniovi.es 61
  62. 62. Modelo de petición-respuesta de HTTP Respuesta devuelta por el servidor Entre las cabeceras de respuesta: Resultado de la petición (status-code) MIME type de los datos 200 400 401 403 404 ... – – – – – OK Bad Request Unauthorized Forbidden Not Found Codificación estándar de los tipos de datos Página HTML: text/html Documento XML: text/xml Imagen en formato JPEG: image/jpeg ene-09 alb@uniovi.es 62
  63. 63. Comparación entre servlets y componentes JSP HolaMundo Servlet ene-09 alb@uniovi.es 63
  64. 64. Comparación entre servlets y componentes JSP Ejemplo de página JSP ene-09 alb@uniovi.es 64
  65. 65. Comparación entre servlets y componentes JSP JSP: Proceso de compilación ene-09 alb@uniovi.es 65
  66. 66. Comparación entre servlets y componentes JSP Ejemplo: de JSP a Servlet (Tomcat) ene-09 alb@uniovi.es 66
  67. 67. JSP a Servlet.service() Comparación entre servlets y componentes JSP ene-09 alb@uniovi.es 67
  68. 68. Servlet API ene-09 alb@uniovi.es 68
  69. 69. Servlets: Jerarquía No es habitual implementar Servlet directamente Heredamos de HttpServlet ene-09 alb@uniovi.es 69
  70. 70. Comparación entre servlets y componentes JSP Administración y ciclo de vida ene-09 alb@uniovi.es 70
  71. 71. Comparación entre servlets y componentes JSP 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. ene-09 alb@uniovi.es 71
  72. 72. Comparación entre servlets y componentes JSP 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 ene-09 alb@uniovi.es 72
  73. 73. Control de la concurrencia en componentes Web Concurrencia basada en hilos ene-09 alb@uniovi.es 73
  74. 74. Control de la concurrencia en componentes Web Consecuencias para el desarrollador Un único Servlet puede estar atendiendo múltiples peticiones simultáneas Varios hilos ejecutándo service() problemas de concurrencia posibles Precauciones al: Usar variables de instancia Usar variables de clase (static) Acceder a recursos externos si ellos no soportan concurrencia Posible recurso: ene-09 alb@uniovi.es 74
  75. 75. Control de la concurrencia en componentes Web Asignación de alias y raíz de contexto web Formato general de URI Nombre del fichero o alias de servlet que forma parte de la aplicación Nombre de la aplicación (el del paquete WAR o EAR) bank.war ene-09 alb@uniovi.es 75
  76. 76. Administración de sesiones 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 ene-09 alb@uniovi.es 76
  77. 77. Complejidad de la capa Web 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 ene-09 alb@uniovi.es 77
  78. 78. Complejidad de la capa Web Arquitectura Model 1 ene-09 Secundino González Pérez alb@uniovi.es 78
  79. 79. Complejidad de la capa Web Arquitectura Model 2 ene-09 Secundino González Pérez alb@uniovi.es 79
  80. 80. Patrones de diseño en la capa Web Paradigma modelo-vista-controlador ene-09 alb@uniovi.es 80
  81. 81. Patrones de diseño en la capa Web Arquitectura 2 y MVC ene-09 alb@uniovi.es 81
  82. 82. Patrones de diseño en la capa Web Patrón Business-Delegate ene-09 alb@uniovi.es 82
  83. 83. Patrones de diseño en la capa Web 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 ene-09 alb@uniovi.es 83
  84. 84. Contenidos ene-09 alb@uniovi.es 84
  85. 85. Conceptos básicos sobre el API de los servlets API genéricas y específicas de los protocolos ene-09 alb@uniovi.es 85
  86. 86. Conceptos básicos sobre el API de los servlets Método service() ene-09 alb@uniovi.es 86
  87. 87. Conceptos básicos sobre el API de los servlets Método service() en HTTPServlet Separa la petición en función del método HTTP ene-09 alb@uniovi.es 87
  88. 88. Conceptos básicos sobre el API de los servlets Métodos de manejo de peticiones ene-09 alb@uniovi.es 88
  89. 89. Conceptos básicos sobre el API de los servlets Métodos de manejo de peticiones, código ene-09 alb@uniovi.es 89
  90. 90. Conceptos básicos sobre el API de los servlets HolaMundo Servlet ene-09 alb@uniovi.es 90
  91. 91. Conceptos básicos sobre el API de los servlets 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 ene-09 alb@uniovi.es 91
  92. 92. Conceptos básicos sobre el API de los servlets Ejemplo fichero web.xml ene-09 alb@uniovi.es 92
  93. 93. Utilización de las API de petición y respuesta Utilización de las API de petición y respuesta 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) protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { . . . } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { . . . ene-09 alb@uniovi.es 93 }
  94. 94. Utilización de las API de petición y respuesta Utilización de las API de petición y respuesta WebContainer ContentType[W] Attributes[R/W/D] Writer[W] Parameters[R] OutputStream[W] Session[R/W/D] Cookies[W] Cookies [R] Redirect[W] HttpServeltRequest ene-09 HttpServletResponse service() alb@uniovi.es 94
  95. 95. Utilización de las API de petición y respuesta <form> y request.getParameter() ene-09 alb@uniovi.es 95
  96. 96. Reenvío de control y transferencia de datos 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 ene-09 alb@uniovi.es 96
  97. 97. Reenvío de control y transferencia de datos 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) ene-09 alb@uniovi.es 97
  98. 98. Reenvío de control y transferencia de datos 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 En el JSP ene-09 alb@uniovi.es 98
  99. 99. Administración de sesiones Gestión de la sesión por el contenedor ene-09 alb@uniovi.es 99
  100. 100. Administración de sesiones Interfaz HttpSession Deprecated methods ene-09 alb@uniovi.es 100
  101. 101. Administración de sesiones Enlace de sesion y navegador Cookies En servidor las inserta en cada respuesta al navegador Reescribiendo todas las URL generadas por el contenedor Rewrited as ene-09 alb@uniovi.es 101
  102. 102. Administración de sesiones Cierre de sesión, timeout, nueva ene-09 alb@uniovi.es 102
  103. 103. Contenidos ene-09 alb@uniovi.es 103
  104. 104. Tecnología JSP como mecanismo de presentación 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) ene-09 alb@uniovi.es 104
  105. 105. Tecnología JSP como mecanismo de presentación Proceso de compilación ene-09 alb@uniovi.es 105
  106. 106. Tecnología JSP como mecanismo de presentación Elementos en las páginas JSP Directivas Permiten condicionar la generación del código del servlet generado 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 ene-09 alb@uniovi.es 106
  107. 107. Creación de páginas JSP Elementos en las páginas JSP ene-09 alb@uniovi.es 107
  108. 108. Creación de páginas JSP Formas sintácticas de las etiquetas JSP ene-09 alb@uniovi.es 108
  109. 109. Creación de páginas JSP Directivas JSP Las directivas son mensajes al contenedor de JSP Ejemplos: Elemento <%@ page ... %> <%@ include ... %> <%@ taglib ... %> Descripción Permite importar clases Java, especificar el tipo de la respuesta (“text/html” por omisión), etcétera Permite incluir otros ficheros antes de que la página sea traducida a un servlet Declara una biblioteca de etiquetas con acciones personalizadas para ser utilizadas en la página Forma general: <%@ directive { attr=”value” }* %> ene-09 alb@uniovi.es 109
  110. 110. Creación de páginas JSP Directiva page ene-09 alb@uniovi.es 110
  111. 111. Creación de páginas JSP Directiva import Inserta el texto de otro recurso en tiempo de compilación ene-09 alb@uniovi.es 111
  112. 112. Creación de páginas JSP Ejemplo: directiva include ene-09 alb@uniovi.es 112
  113. 113. Creación de páginas JSP Elementos de “scripting” Elemento Descripción <% ... %> Scriptlet. se usa para meter código Java dentro <%= ... %> Expresión. Permite acceder al valor devuelto por una expresión en Java e imprimirlo en OUT <%! ... %> Declaración. Usada para declarar variables y métodos en la clase correspondiente a la página Comentario. Comentario ignorado cuando se <%-- … --%> traduce la página JSP en un servlet. (comentario en el HTML <!-- comment ) ene-09 alb@uniovi.es 113
  114. 114. Creación de páginas JSP Ejemplo: expresión, saludo.jsp <%= expresión ene-09 Nota: Si se necesita usar los caracteres "%>" dentro de un scriptlet, hay que usar "%>" y “<%” alb@uniovi.es 114
  115. 115. Creación de páginas JSP Ejemplo: scriptlet, saludo.jsp <% ene-09 alb@uniovi.es 115
  116. 116. Creación de páginas JSP Ejemplo: declaración, saludo.jsp <%! ene-09 alb@uniovi.es 116
  117. 117. Creación de páginas JSP 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: ene-09 request response pageContext session application out config Se puede acceder a ellos directamente desde los “scriptlets” alb@uniovi.es 117
  118. 118. Procesamiento de datos de servlets Acciones JSP Etiquetas XML que tienen procesamiento asociado ene-09 alb@uniovi.es 118
  119. 119. Procesamiento de datos de servlets <jsp:useBean ene-09 alb@uniovi.es 119
  120. 120. Procesamiento de datos de servlets <jsp:useBean id=“” ene-09 alb@uniovi.es 120
  121. 121. Procesamiento de datos de servlets Ambitos JSP ene-09 alb@uniovi.es 121
  122. 122. Procesamiento de datos de servlets Recuperando beans de la request ene-09 alb@uniovi.es 122
  123. 123. Bibliotecas de etiquetas personalizadas Directiva taglib Declara que la página usa una librería de tags (acciones) <%@ taglib uri=”http://www.mycorp/supertags” prefix=”super” %> ... Alias definido en web.xml <super:doMagic> ... </super:doMagic> Identifica la librería por su URI Le asocia un prefijo para usar en el código de la JSP Syntax ene-09 alb@uniovi.es 123 <%@ taglib ( uri=”tagLibraryURI” | tagdir=”tagDir” ) prefix=”tagPrefix” %>
  124. 124. Bibliotecas de etiquetas personalizadas Ejemplo de uso de JSTL y EL ene-09 alb@uniovi.es 124
  125. 125. Contenidos ene-09 alb@uniovi.es 125
  126. 126. Función de los componentes EJB 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. ene-09 alb@uniovi.es 126
  127. 127. Función de los componentes EJB Solución en capas Service Interface Control Action Action Action Action Session Beans implementan el patrón Fachada Clases Java implementan el modelo del dominio Persistence Interface Fa ca de Fa ca de Hibernate DAO Procs Procs Procs Model Model Model JDBC JDBC DAO JPA DAO Spring DAO Procs DAO Factory Presentac. ene-09 ene-09 Lógica alb@uniovi.es Persistencia 127 127
  128. 128. Función de los componentes EJB Capas de EJBs ene-09 alb@uniovi.es 128
  129. 129. Función de los componentes EJB Interfaces Context EJBContext SessionContext MessageContext Permiten al componente EJB interaccionar con el contenedor Seguridad Transacciones Búsquedas JNDI ene-09 alb@uniovi.es 129
  130. 130. Análisis del modelo de componentes EJB Función del contenedor EJB ene-09 alb@uniovi.es 130
  131. 131. Objetos EJB y proxies Intercepta las llamadas y toma el control ene-09 ene-09 Clase que se programa EJBObject alb@uniovi.es 131 131
  132. 132. Conexión local Interfaz local EJB Container Vistas de cliente locales y distribuidas ene-09 ene-09 alb@uniovi.es alb@uniovi.es 132132
  133. 133. Conexión remota Interfaz remota EJB Container Vistas de cliente locales y distribuidas ene-09 ene-09 alb@uniovi.es alb@uniovi.es 133133
  134. 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 ene-09 alb@uniovi.es 134 134
  135. 135. Llamada a EJB desde servlets Servlet con referencia un bean de 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() ene-09 alb@uniovi.es 135
  136. 136. Llamada a EJB desde servlets 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. ene-09 alb@uniovi.es 136
  137. 137. Contenidos ene-09 alb@uniovi.es 137
  138. 138. Comparación de comportamientos con y sin estado Mantenimiento del estado Capa de usuario (programa cliente) Trasiego de datos Capa Web Carrito de la compra Datos en varias páginas En HttpSession Capa de negocio (EJB) En EJBs con estado Capa de base de datos ene-09 alb@uniovi.es 138
  139. 139. Características de los beans sin estado 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. ene-09 alb@uniovi.es 139
  140. 140. Características de los beans sin estado Beans sin estado Cuidado con los atributos de instancia ene-09 alb@uniovi.es 140
  141. 141. Características de los beans con estado Beans con estado ene-09 alb@uniovi.es 141
  142. 142. Creación de beans de sesión Adaptación de una clase Java a EJB sin sesión Declarar interfaz de negocio anotaciones Definir clase de implementación ene-09 alb@uniovi.es 142
  143. 143. Creación de beans de sesión Interfaces locales y remotas La implementación se puede anotar con @Remote pero no con @Local y @Remote a la vez ene-09 Un implementación puede ser remota y local pero las anotaciones van en cada interfaz alb@uniovi.es 143
  144. 144. Creación de beans de sesión Interfaces locales y remotas La implementación se puede anotar con @Remote pero 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 144
  145. 145. Creación de beans de sesión 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. ene-09 alb@uniovi.es 145
  146. 146. Creación de beans de sesión 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 ene-09 @PostConstruct, @PreDestroy, alb@uniovi.es (Sólo statefull) @PostActivate, @PrePassivate 146
  147. 147. Creación de beans de sesión Ciclo de vida de session beans sin estado ene-09 alb@uniovi.es 147
  148. 148. Creación de beans de sesión Ciclo de vida de session beans con estado ene-09 alb@uniovi.es 148
  149. 149. Creación de beans de sesión Objeto SessionContext Proporciona acceso al EJBObject (al contenedor) Entorno de seguridad Información sobre el control de la transacción Acceso a JNDI ene-09 alb@uniovi.es 149
  150. 150. Empaquetado y despliegue de beans de sesión 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 ene-09 alb@uniovi.es 150
  151. 151. Empaquetado y despliegue de beans de sesión Ejemplo de ejb-jar.xml ene-09 alb@uniovi.es 151
  152. 152. Empaquetado y despliegue de beans de sesión 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.xml en /META-INF ene-09 alb@uniovi.es 152
  153. 153. Creación de un cliente bean de sesión 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) ene-09 alb@uniovi.es 153
  154. 154. Creación de un cliente bean de sesión Con servicios de contenedor Servlet o EJB local El contenedor inyecta la referencia ene-09 alb@uniovi.es 154
  155. 155. Creación de un cliente bean de sesión Con servicios de contenedor Servlet o EJB remoto (en otro contenedor) Búsqueda JNDI En ejb-jar.xml o web.xml ene-09 alb@uniovi.es 155
  156. 156. Creación de un cliente bean de sesión Sin servicios de contenedor Clase Java (local o remota) Se deben usar los servicios JNDI ene-09 alb@uniovi.es 156
  157. 157. Contenidos ene-09 alb@uniovi.es 157
  158. 158. API de persistencia de Java 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 mapeador objeto/relacional ene-09 alb@uniovi.es 158
  159. 159. Mapeadores objeto/relacional 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) ene-09 alb@uniovi.es 159
  160. 160. Requisitos de una clase Entidad 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 ene-09 alb@uniovi.es 160
  161. 161. Requisitos de una clase Entidad 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) ene-09 alb@uniovi.es 161
  162. 162. ene-09 alb@uniovi.es 162
  163. 163. Requisitos de una clase Entidad Modelo de dominio en código ene-09 alb@uniovi.es 163
  164. 164. Requisitos de una clase Entidad De clase a tabla ene-09 alb@uniovi.es 164
  165. 165. Requisitos de una clase Entidad Campos persistentes o propiedades Acceso field: se anotan los atributos Acceso properties: se anotan los getters ene-09 alb@uniovi.es 165
  166. 166. Requisitos de una clase Entidad 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 ene-09 alb@uniovi.es 166
  167. 167. Ciclo de vida de las entidades 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 ene-09 alb@uniovi.es 167
  168. 168. Ciclo de vida de las entidades Archivo persistence.xml Define las clases que forman parte de la persistence-unit (por su presencia) Especifica el DataSource ene-09 alb@uniovi.es 168
  169. 169. Ciclo de vida de las entidades Ejemplo de uso de EntityManager ene-09 alb@uniovi.es 169
  170. 170. Ciclo de vida de las entidades Estados de un objeto persistente ene-09 alb@uniovi.es JVM 170
  171. 171. Ciclo de vida de las entidades Notificación de cambios de estado Especificación de métodos callback con anotaciones @PrePersist @PostPersist @PreRemove @PostRemove @PreUpdate @PostUpdate @PostLoad ene-09 alb@uniovi.es 171
  172. 172. Ciclo de vida de las entidades Estructura típica de archivo ejb-jar ene-09 alb@uniovi.es 172
  173. 173. Ciclo de vida de las entidades API JPA ene-09 alb@uniovi.es 173
  174. 174. Ciclo de vida de las entidades 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 ene-09 alb@uniovi.es 174
  175. 175. Ciclo de vida de las entidades Ejemplo de Queries ene-09 alb@uniovi.es 175
  176. 176. Contenidos ene-09 alb@uniovi.es 176
  177. 177. Semántica transaccional Transacciones ACID Es la demarcación de una unidad de trabajo JPA permite trabajar con varios API de transacciones JSE JDBC JTA Declarativas (EJB) ene-09 alb@uniovi.es 177
  178. 178. Semántica transaccional 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 ene-09 alb@uniovi.es 178
  179. 179. Transacciones programáticas y declarativas 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 ene-09 alb@uniovi.es 179
  180. 180. Controlar transacciones programáticas JTA Control usando JTA Acceso JNDI o anotacion ene-09 alb@uniovi.es 180
  181. 181. Controlar transacciones programáticas JTA Ejemplo de control de transacción ene-09 alb@uniovi.es 181
  182. 182. Transacciones administradas por el contenedor Control por el contenedor El atributo de la trx controla el ciclo de vida de la transacción en curso ene-09 Required RequiresNew NotSupported Supports Mandatory Never alb@uniovi.es 182
  183. 183. Transacciones administradas por el contenedor Coordinador de transacciones ene-09 alb@uniovi.es 183
  184. 184. Bloqueo optimista y control de versiones Control pesimista y optimista ROLLBACK Lock Lock v1.0 Lock ROLLBACK PESIMISTA ene-09 v1.0 v2.0 En BDD ya no es v1.0 OPTIMISTA Alberto alb@uniovi.es M.F.A. alb@uniovi.es 184
  185. 185. Bloqueo optimista y control de versiones 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 versión a los objetos ene-09 Alberto alb@uniovi.es M.F.A. alb@uniovi.es 185
  186. 186. Bloqueo optimista y control de versiones 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) ene-09 Alberto alb@uniovi.es M.F.A. alb@uniovi.es 186
  187. 187. Bloqueo optimista y control de versiones Tipos válidos para versionado Mapeado de campos ! Sin get/set JPA gestiona los campos versión de forma automática ene-09 Alberto alb@uniovi.es M.F.A. alb@uniovi.es 187
  188. 188. Excepciones durante una transacción Excepciones JPA 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 y NonUniqueResultException. Todas NO chequeadas ene-09 Alberto alb@uniovi.es M.F.A. alb@uniovi.es 188
  189. 189. Excepciones durante una transacción 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 ene-09 alb@uniovi.es 189
  190. 190. Contenidos ene-09 alb@uniovi.es 190
  191. 191. Tecnología del API JMS 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) ene-09 alb@uniovi.es 191
  192. 192. Tecnología del API JMS MOM como integrador Distribución de mensajes Clientes de mensajería ene-09 alb@uniovi.es 192
  193. 193. Tecnología del API JMS Tipos de clientes de mensajería Se bloquea esperando la llegada de un mensaje ene-09 alb@uniovi.es 193
  194. 194. Tecnología del API JMS 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 ene-09 alb@uniovi.es 194
  195. 195. Tecnología del API JMS 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 ene-09 alb@uniovi.es 195
  196. 196. Tecnología del API JMS Elementos del API JMS ene-09 alb@uniovi.es 196
  197. 197. Tecnología del API JMS Estructura de los mensajes ene-09 alb@uniovi.es 197
  198. 198. Creación de un productor de mensajes de cola Diagrama de colaboración ene-09 alb@uniovi.es 198
  199. 199. Ejemplo Creación de un productor de mensajes de cola ene-09 alb@uniovi.es 199
  200. 200. Creación de un consumidor de mensajes síncrono Diagrama de colaboración ene-09 alb@uniovi.es 200
  201. 201. Ejemplo Creación de un consumidor de mensajes síncrono ene-09 alb@uniovi.es 201
  202. 202. Creación de un consumidor de mensajes asíncrono Método gestor del evento ene-09 alb@uniovi.es 202
  203. 203. Creación de un consumidor de mensajes asíncrono ene-09 alb@uniovi.es 203
  204. 204. EJB como clientes de mensajería EJB como clientes de mensajería ene-09 alb@uniovi.es 204
  205. 205. Contenidos ene-09 alb@uniovi.es 205
  206. 206. Introducción a los beans controlados por mensajes MessageDriven Beans Son clientes asíncronos de mensajes Implementan el interfaz MessageListener Desconectados de cliente ene-09 alb@uniovi.es 206
  207. 207. Introducción a los beans controlados por mensajes Ciclo de vida Posible interceptar los cambios de estado @PostConstruct @PreDestroy ene-09 alb@uniovi.es 207
  208. 208. Creación de un bean controlado por mensajes Código ejemplo ene-09 alb@uniovi.es 208
  209. 209. Creación de un bean controlado por mensajes Filtra los mensajes que llegan ene-09 alb@uniovi.es 209
  210. 210. Contenidos ene-09 alb@uniovi.es 210
  211. 211. Finalidad de los servicios web 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 ene-09 alb@uniovi.es 211
  212. 212. Finalidad de los servicios web 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 ene-09 alb@uniovi.es 212
  213. 213. Finalidad de los servicios web Comparación entre servicios web y EJB remotos La implementación del servicio web similar 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 ene-09 alb@uniovi.es 213
  214. 214. Especificaciones de los servicios web 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 ene-09 alb@uniovi.es 214
  215. 215. Especificaciones de los servicios web Arquitectura de WS ene-09 alb@uniovi.es 215
  216. 216. Especificaciones de los servicios web Ejemplo mensajes SOAP Petición Respuesta ene-09 alb@uniovi.es 216
  217. 217. Especificaciones de los servicios web Ejemplo WSDL “hola mundo” Estructura general de documento WSDL ene-09 alb@uniovi.es 217
  218. 218. APIs de Java relacionados con servicios web 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 - + Complejidad ene-09 API de más alto nivel Usa todas las demás por debajo Permite manejo de WS sin conocimientos de XML, SOAP, etc alb@uniovi.es 218
  219. 219. Contenidos ene-09 alb@uniovi.es 219
  220. 220. Puntos finales servlet JAX-WS Punto final un Servlet web.xml ene-09 alb@uniovi.es 220
  221. 221. Puntos finales EJB JAX-WS Punto final un EJB ene-09 alb@uniovi.es 221
  222. 222. Puntos finales EJB JAX-WS Tipos de datos admitidos en JAX-WS Se pueden transferir tipos básicos a WS Tipos complejos deben marcados ene-09 alb@uniovi.es 222
  223. 223. Clientes de servicios Web 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 proxy dinámicamente ene-09 alb@uniovi.es 223
  224. 224. Clientes de servicios Web Ejemplo Cliente con proxy dinámico Cliente con proxy estático ene-09 alb@uniovi.es 224
  225. 225. Contenidos ene-09 alb@uniovi.es 225
  226. 226. Seguridad administrada por el contenedor 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 ene-09 alb@uniovi.es 226
  227. 227. Seguridad administrada por el contenedor 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) ene-09 alb@uniovi.es 227
  228. 228. Seguridad administrada por el contenedor Propagación del contexto de seguridad ene-09 alb@uniovi.es 228
  229. 229. Seguridad administrada por el contenedor 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 ene-09 ene-09 Albertoalb@uniovi.es M.F.A. 229 229
  230. 230. Seguridad administrada por el contenedor 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 Del servidor siempre, asimétrica del cliente si tiene certificado Ofrece: ene-09 Autentificación Confidencialidad Integridad alb@uniovi.es 230
  231. 231. Seguridad administrada por el contenedor Autenticación administrada por contenedor web ene-09 alb@uniovi.es 231
  232. 232. Seguridad administrada por el contenedor Especificación En web.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 ene-09 alb@uniovi.es 232
  233. 233. Seguridad administrada por el contenedor web.xml Colección de recursos, roles y métodos Si no hay método todos están protegidos ene-09 alb@uniovi.es 233
  234. 234. Seguridad administrada por el contenedor web.xml Roles Técnicas ene-09 alb@uniovi.es 234
  235. 235. Seguridad administrada por el contenedor Tipos de autenticación soportados BASIC DIGEST FORM CLIENT-CERT ene-09 alb@uniovi.es 235
  236. 236. Seguridad administrada por el contenedor Autentificación por Formulario No es segura por sí sola, es necesario combinarla con HTTPs (SSL – Secure Socket Layer) 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 ene-09 alb@uniovi.es 236
  237. 237. Seguridad administrada por el contenedor 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 ... ene-09 Consultar documentación del alb@uniovi.es contenedor 237
  238. 238. Roles y responsabilidades del usuario Usuarios y roles ene-09 alb@uniovi.es 238
  239. 239. Roles y responsabilidades del usuario Autorización basada en funciones en la capa EJB ene-09 alb@uniovi.es 239
  240. 240. Utilización del API de seguridad Métodos de API Métodos en web: getUserPrincipal y isUserInRole Métodos en EJB: getCallerPrincipal y isCallerInRole ene-09 alb@uniovi.es 240
  241. 241. Utilización del API de seguridad API de seguridad de la capa web ene-09 alb@uniovi.es 241
  242. 242. Utilización del API de seguridad API de seguridad de la capa EJB ene-09 alb@uniovi.es 242
  243. 243. Seguridad HTTP y clientes JAX-WS 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 ene-09 alb@uniovi.es 243

×