Sesion 3. Desarrollo de aplicaciones JEE

Anuncio
Desarrollo de aplicaciones JEE
ene-09
alb@uniovi.es
1
Contenidos
ene-09
alb@uniovi.es
2
Requisitos de las aplicaciones de empresa
Plataformas de la tecnología
Java y Java EE
ene-09
alb@uniovi.es
3
Requisitos de las aplicaciones de empresa
Tecnologías de infraestructura
en aplicaciones de empresa
ene-09
alb@uniovi.es
4
Requisitos de las aplicaciones de empresa
Elementos de la tecnología
Java EE
ene-09
alb@uniovi.es
5
Requisitos de las aplicaciones de empresa
Función de las API de Java EE
ene-09
alb@uniovi.es
6
Requisitos de las aplicaciones de empresa
Contenedores Java EE
ene-09
alb@uniovi.es
7
Requisitos de las aplicaciones de empresa
Separación de lógica de
negocio y servicios
ene-09
alb@uniovi.es
8
API y servicios de la plataforma Java EE
Servicios Java EE: categorías
De implementación:
Inherentes:
Persistencia
Transacciones
Seguridad
API:
Asignación de nombres
Mensajería
Conectores
Del fabricante:
Configurados en XML
o con annotations
ene-09
Ciclo de vida
Subprocesos (threading)
Comunicación con
objetos remotos, como
RMI y CORBA
Usados desde código
alb@uniovi.es
Capacidad de ampliación
Fail over
Balanceo de carga
9
API y servicios de la plataforma Java EE
Servicios Java EE
ene-09
alb@uniovi.es
10
Capas y arquitecturas de la plataforma Java EE
Arquitectura de N capas
ene-09
alb@uniovi.es
11
Capas y arquitecturas de la plataforma Java EE
JEE y las N capas
ene-09
alb@uniovi.es
12
Capas y arquitecturas de la plataforma Java EE
Arquitectura de N capas
ene-09
alb@uniovi.es
13
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
Capas y arquitecturas de la plataforma Java EE
Arq. centrada en la web
ene-09
alb@uniovi.es
15
Capas y arquitecturas de la plataforma Java EE
Arq. centrada en EJB
ene-09
alb@uniovi.es
16
Capas y arquitecturas de la plataforma Java EE
Arquitectura B2B
ene-09
alb@uniovi.es
17
Capas y arquitecturas de la plataforma Java EE
Arq. de servicios Web
ene-09
alb@uniovi.es
18
Patrones Java EE
Catálogo de patrones Java EE
ene-09
alb@uniovi.es
19
Patrones Java EE
Algunos patrones en Java EE
ene-09
alb@uniovi.es
20
Contenidos
ene-09
alb@uniovi.es
21
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:
ene-09
Servlets
JSP (java servlet pages)
Beans de sesion
Clases entidad
Beans de mensajes
alb@uniovi.es
22
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
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:
ene-09
En Java pares getters y setters
alb@uniovi.es
24
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
ene-09
Interface java
alb@uniovi.es
25
Principios de desarrollo basado en componentes
Interfaces como contratos
ene-09
alb@uniovi.es
26
Principios de desarrollo basado en componentes
Conexiones remotas
(diversas tecnologías)
Conexiones
remotas y
locales
ene-09
Conexiones
locales
alb@uniovi.es
27
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
Principios de desarrollo basado en componentes
Implicaciones de invocación
remota
Cambio de semántica:
Marshalling y unmarshalling
Paso por valor (remotas)
Paso por referencia (locales)
Sobrecarga grande (10/1)
Acceso remoto proporciona
transparencia de ubicación
ene-09
alb@uniovi.es
29
Principios de desarrollo basado en componentes
Servicios de nombres en el
modelo de componentes
ene-09
alb@uniovi.es
30
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
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
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
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
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
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:
ene-09
Semántica petición-notificación
El llamador no bloquea en espera
Reduce el acoplamiento
alb@uniovi.es
36
Modelo de comunicación asíncrona
Interacción asíncrona de
componentes
ene-09
alb@uniovi.es
37
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
ene-09
Servidores, buffers, notificaciones
Generan más tráfico de red ¿?
alb@uniovi.es
38
Desarrollo de aplicaciones Java EE
Roles en JEE
ene-09
alb@uniovi.es
39
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
Desarrollo de aplicaciones Java EE
Ensamblado de EAR
ene-09
alb@uniovi.es
41
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:
ene-09
Eclipse, Netbeans
alb@uniovi.es
42
Comparación entre opciones de desarrollo
Sistemas de control de código
fuente
ene-09
alb@uniovi.es
43
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
Configuración y empaquetado de aplicaciones JEE
Archivos WEB
ene-09
alb@uniovi.es
45
Configuración y empaquetado de aplicaciones JEE
Creación manual de .WAR
ene-09
2008-2009
alb@uniovi.es
DASDI
46 46
Configuración y empaquetado de aplicaciones JEE
Archivos JAR
Contienen
módulos EJB
ene-09
Clases
Interfaces
Descriptores
de despliege
Otros
recursos
alb@uniovi.es
47
Configuración y empaquetado de aplicaciones JEE
Ejemplo estructura EJB-JAR
ene-09
2008-2009
alb@uniovi.es
DASDI
48 48
Configuración y empaquetado de aplicaciones JEE
Archivos de recursos (RAR)
Componente de más bajo nivel
integrado en el framework JEE
ene-09
Manipulación de Transacciones, Seguridad
Llamadas nativas, manipulación de hilos,
etc
Adaptadores a otros sistemas, etc
alb@uniovi.es
49
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
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
Configuración y empaquetado de aplicaciones JEE
Ejemplo ejb-jar.xml
ene-09
alb@uniovi.es
52
Configuración y empaquetado de aplicaciones JEE
Estructura application.xml
ene-09
alb@uniovi.es
53
Configuración y empaquetado de aplicaciones JEE
Descriptores específicos
Para cada contenedor concreto
ene-09
Se especifican las características propias de
ese contendor
Cada contendor es distinto
En un empaquetado se pueden añadir
muchos descriptores distintos
alb@uniovi.es
54
Configuración y empaquetado de aplicaciones JEE
Ejemplo
servidor
Sun Java
System
ene-09
alb@uniovi.es
55
Contenidos
ene-09
alb@uniovi.es
56
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
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
Modelo de petición-respuesta de HTTP
Protocolo HTTP
ene-09
alb@uniovi.es
59
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
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
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
ene-09
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
alb@uniovi.es
62
Comparación entre servlets y componentes JSP
HolaMundo Servlet
ene-09
alb@uniovi.es
63
Comparación entre servlets y componentes JSP
Ejemplo de página JSP
ene-09
alb@uniovi.es
64
Comparación entre servlets y componentes JSP
JSP: Proceso de compilación
ene-09
alb@uniovi.es
65
Comparación entre servlets y componentes JSP
Ejemplo: de JSP a Servlet
(Tomcat)
ene-09
alb@uniovi.es
66
JSP a
Servlet.service()
Comparación entre servlets y componentes JSP
ene-09
alb@uniovi.es
67
Servlet API
ene-09
alb@uniovi.es
68
Servlets: Jerarquía
No es habitual implementar Servlet
directamente
Heredamos de HttpServlet
ene-09
alb@uniovi.es
69
Comparación entre servlets y componentes JSP
Administración y ciclo de vida
ene-09
alb@uniovi.es
70
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
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
ene-09
JSP para generar la vista
Servlets para ejecutar la lógica del negocio
alb@uniovi.es
72
Control de la concurrencia en componentes Web
Concurrencia basada en hilos
ene-09
alb@uniovi.es
73
Control de la concurrencia en componentes Web
Consecuencias para el
desarrollador
Un único Servlet puede estar atendiendo
múltiples peticiones simultáneas
Precauciones al:
Varios hilos ejecutándo service() posibles
problemas de concurrencia
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
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
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
Mantener datos en el servidor
Cookies, URL rewriting, etc
Útil si hay pocos datos
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
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
Complejidad de la capa Web
Arquitectura Model 1
ene-09
Secundino González
Pérez
alb@uniovi.es
78
Complejidad de la capa Web
Arquitectura Model 2
ene-09
Secundino González
Pérez
alb@uniovi.es
79
Patrones de diseño en la capa Web
Paradigma
modelo-vista-controlador
ene-09
alb@uniovi.es
80
Patrones de diseño en la capa Web
Arquitectura 2 y MVC
ene-09
alb@uniovi.es
81
Patrones de diseño en la capa Web
Patrón Business-Delegate
ene-09
alb@uniovi.es
82
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
Contenidos
ene-09
alb@uniovi.es
84
Conceptos básicos sobre el API de los servlets
API genéricas y específicas de
los protocolos
ene-09
alb@uniovi.es
85
Conceptos básicos sobre el API de los servlets
Método service()
ene-09
alb@uniovi.es
86
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
Conceptos básicos sobre el API de los servlets
Métodos de manejo de
peticiones
ene-09
alb@uniovi.es
88
Conceptos básicos sobre el API de los servlets
Métodos de manejo de
peticiones, código
ene-09
alb@uniovi.es
89
Conceptos básicos sobre el API de los servlets
HolaMundo Servlet
ene-09
alb@uniovi.es
90
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
ene-09
Página de inicio, mapes de Servlets y URLs,
parámetros de configuración para servlets,
recursos referenciados, etc
alb@uniovi.es
91
Conceptos básicos sobre el API de los servlets
Ejemplo fichero web.xml
ene-09
alb@uniovi.es
92
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
}
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
Utilización de las API de petición y respuesta
<form> y
request.getParameter()
ene-09
alb@uniovi.es
95
Reenvío de control y transferencia de datos
Interfaz RequestDispatcher
Deriva la petición a otro servlet o JSP
para que complete el procesamiento
ene-09
Es lo que permite que el JSP genera la
vista y el servlet procese la lógica
alb@uniovi.es
96
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():
ene-09
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)
alb@uniovi.es
97
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
Administración de sesiones
Gestión de la sesión por el
contenedor
ene-09
alb@uniovi.es
99
Administración de sesiones
Interfaz HttpSession
Deprecated methods
ene-09
alb@uniovi.es
100
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
Administración de sesiones
Cierre de sesión, timeout,
nueva
ene-09
alb@uniovi.es
102
Contenidos
ene-09
alb@uniovi.es
103
Tecnología JSP como mecanismo de presentación
Presentación con JSP
Ventajas:
ene-09
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)
alb@uniovi.es
104
Tecnología JSP como mecanismo de presentación
Proceso de compilación
ene-09
alb@uniovi.es
105
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
Acciones
Etiquetas XML que invocan a clases que generan código de
salida para la petición
Requisitos de buffering
Página de error para redirección, etc.
Acciones estándar
Acciones propietarias (Tag libs)
Scriptlets
ene-09
Permite insertar código java que será ejecutado en el
momento de la petición
alb@uniovi.es
106
Creación de páginas JSP
Elementos en las páginas JSP
ene-09
alb@uniovi.es
107
Creación de páginas JSP
Formas sintácticas de las
etiquetas JSP
ene-09
alb@uniovi.es
108
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
Creación de páginas JSP
Directiva page
ene-09
alb@uniovi.es
110
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
Creación de páginas JSP
Ejemplo: directiva include
ene-09
alb@uniovi.es
112
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
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
Creación de páginas JSP
Ejemplo: scriptlet, saludo.jsp
<%
ene-09
alb@uniovi.es
115
Creación de páginas JSP
Ejemplo: declaración,
saludo.jsp
<%!
ene-09
alb@uniovi.es
116
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
Procesamiento de datos de servlets
Acciones JSP
Etiquetas XML que tienen
procesamiento asociado
ene-09
alb@uniovi.es
118
Procesamiento de datos de servlets
<jsp:useBean
ene-09
alb@uniovi.es
119
Procesamiento de datos de servlets
<jsp:useBean id=“”
ene-09
alb@uniovi.es
120
Procesamiento de datos de servlets
Ambitos JSP
ene-09
alb@uniovi.es
121
Procesamiento de datos de servlets
Recuperando beans de la
request
ene-09
alb@uniovi.es
122
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
Syntax
ene-09
Le asocia un prefijo para usar en el
código de la JSP
alb@uniovi.es
123
<%@ taglib ( uri=”tagLibraryURI” | tagdir=”tagDir” ) prefix=”tagPrefix” %>
Bibliotecas de etiquetas personalizadas
Ejemplo de uso de JSTL y EL
ene-09
alb@uniovi.es
124
Contenidos
ene-09
alb@uniovi.es
125
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
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
127127
Función de los componentes EJB
Capas de EJBs
ene-09
alb@uniovi.es
128
Función de los componentes EJB
Interfaces Context
EJBContext
SessionContext
MessageContext
Permiten al componente EJB
interaccionar con el contenedor
ene-09
Seguridad
Transacciones
Búsquedas JNDI
alb@uniovi.es
129
Análisis del modelo de componentes EJB
Función del contenedor EJB
ene-09
alb@uniovi.es
130
Objetos EJB y proxies
Intercepta las
llamadas y
toma el control
ene-09
ene-09
Clase que se
programa
EJBObject
alb@uniovi.es
131131
Conexión local
Interfaz local
EJB Container
Vistas de cliente
locales y
distribuidas
ene-09
ene-09
alb@uniovi.es
alb@uniovi.es
132132
Conexión remota
Interfaz remota
EJB Container
Vistas de cliente
locales y
distribuidas
ene-09
ene-09
alb@uniovi.es
alb@uniovi.es
133133
Invocación de stateless:
cliente
Este código se ejecuta en
ene-09
ene-09
otra máquina (JVM)
El cliente necesita acceso a la
implementación del stub
El stub se obtiene de un
registro JNDI
alb@uniovi.es
134134
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
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
Contenidos
ene-09
alb@uniovi.es
137
Comparación de comportamientos con y sin estado
Mantenimiento del estado
Capa de usuario (programa cliente)
Capa Web
En HttpSession
Carrito de la compra
Datos en varias páginas
Capa de negocio (EJB)
Trasiego de datos
En EJBs con estado
Capa de base de datos
ene-09
alb@uniovi.es
138
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.
ene-09
Mejora de rendimiento.
alb@uniovi.es
139
Características de los beans sin estado
Beans sin estado
Cuidado con los atributos de instancia
ene-09
alb@uniovi.es
140
Características de los beans con estado
Beans con estado
ene-09
alb@uniovi.es
141
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
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
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
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
Creación de beans de sesión
Todas las anotaciones
Tipo de bean
Tipo de acceso
@Remove
Acceso a recursos desde el EJB
@Remote, @Local
Cierre de sesión (en Statefull)
@Stateless, @Statefull
@EJB, @Resource
Ciclo de vida
ene-09
@PostConstruct, @PreDestroy,
alb@uniovi.es
(Sólo statefull) @PostActivate,
@PrePassivate
146
Creación de beans de sesión
Ciclo de vida de session beans
sin estado
ene-09
alb@uniovi.es
147
Creación de beans de sesión
Ciclo de vida de session beans
con estado
ene-09
alb@uniovi.es
148
Creación de beans de sesión
Objeto SessionContext
Proporciona acceso al EJBObject (al
contenedor)
ene-09
Entorno de seguridad
Información sobre el control de la transacción
Acceso a JNDI
alb@uniovi.es
149
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:
ene-09
Web: web.xml
EJB: ejb-jar.xml
Aplicaciones completas: application.xml
alb@uniovi.es
150
Empaquetado y despliegue de beans de sesión
Ejemplo de ejb-jar.xml
ene-09
alb@uniovi.es
151
Empaquetado y despliegue de beans de sesión
Empaquetado
Web: <nombre>.war
EJB: <nombre>.jar
Aplicaciones:
<nombre>.ear
ene-09
Archivo JAR nomal
Descriptor ejb-jar.xml en
/META-INF
Contiene WAR + JAR
Descriptor application.xml
en /META-INF
alb@uniovi.es
152
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?
ene-09
Depende de si el cliente se ejecuta en un
contenedor o no (si es EJB/servlet o clase
normal)
alb@uniovi.es
153
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
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
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
Contenidos
ene-09
alb@uniovi.es
157
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
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
ene-09
Los objetos son persistentes (en BDDR) sin
apenas programación (mucho ahorro de
código tedioso)
alb@uniovi.es
159
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
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
ene-09
Puede ser Set<T>, List<T>, Map<T> o
Collection<T> (interfaces)
alb@uniovi.es
161
ene-09
alb@uniovi.es
162
Requisitos de una clase Entidad
Modelo de dominio en código
ene-09
alb@uniovi.es
163
Requisitos de una clase Entidad
De clase a tabla
ene-09
alb@uniovi.es
164
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
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:
ene-09
java.util.Date, java.sql.TimeStamp
Cualquier otra clase del programa
alb@uniovi.es
166
Ciclo de vida de las entidades
Conceptos básicos
Unidad de persistencia
Administrador de entidades
Controla el ciclo de vida de la entidades: salvar, borrar,
recuperar, buscar (CRUD)
Contexto de persistencia
Conjunto de clases administradas por el ORM
Descriptor persistence.xml
Estado de la entidad con respecto al administrador de
entidades
Identidad persistence
ene-09
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
alb@uniovi.es
167
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
Ciclo de vida de las entidades
Ejemplo de uso de
EntityManager
ene-09
alb@uniovi.es
169
Ciclo de vida de las entidades
Estados de un objeto
persistente
ene-09
alb@uniovi.es
JVM
170
Ciclo de vida de las entidades
Notificación de cambios de
estado
Especificación de métodos callback con
anotaciones
ene-09
@PrePersist
@PostPersist
@PreRemove
@PostRemove
@PreUpdate
@PostUpdate
@PostLoad
alb@uniovi.es
171
Ciclo de vida de las entidades
Estructura típica de archivo
ejb-jar
ene-09
alb@uniovi.es
172
Ciclo de vida de las entidades
API JPA
ene-09
alb@uniovi.es
173
Ciclo de vida de las entidades
Consultas, lenguaje de
consulta
El EntityManager permite la creación de
objetos Query
NativeQuery
NamedQuery
Consulta externalizada a fichero xml (orm.xml)
Query
ene-09
SQL nativo de la BDD
Expresadas en JPA-QL
Lenguaje de consultas OO independiente de la
BDD
alb@uniovi.es
174
Ciclo de vida de las entidades
Ejemplo de Queries
ene-09
alb@uniovi.es
175
Contenidos
ene-09
alb@uniovi.es
176
Semántica transaccional
Transacciones ACID
Es la demarcación de una unidad de
trabajo
JPA permite trabajar con varios API de
transacciones
ene-09
JSE JDBC
JTA
Declarativas (EJB)
alb@uniovi.es
177
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
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
ene-09
El contendor se encarga de la gestión
Anotaciones o xml
alb@uniovi.es
179
Controlar transacciones programáticas JTA
Control usando JTA
Acceso JNDI o anotacion
ene-09
alb@uniovi.es
180
Controlar transacciones programáticas JTA
Ejemplo de control de
transacción
ene-09
alb@uniovi.es
181
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
Transacciones administradas por el contenedor
Coordinador de transacciones
ene-09
alb@uniovi.es
183
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
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
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
ene-09
Campo versión (un entero)
Timestamp (de la última modificación)
Alberto alb@uniovi.es
M.F.A. alb@uniovi.es
186
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
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
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
ene-09
getRollbackOnly
setRollbackOnly
alb@uniovi.es
189
Contenidos
ene-09
alb@uniovi.es
190
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
Tecnología del API JMS
MOM como integrador
Distribución
de mensajes
Clientes de
mensajería
ene-09
alb@uniovi.es
192
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
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
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
Tecnología del API JMS
Elementos del API JMS
ene-09
alb@uniovi.es
196
Tecnología del API JMS
Estructura de los mensajes
ene-09
alb@uniovi.es
197
Creación de un productor de mensajes de cola
Diagrama de colaboración
ene-09
alb@uniovi.es
198
Ejemplo
Creación de un productor de mensajes de cola
ene-09
alb@uniovi.es
199
Creación de un consumidor de mensajes síncrono
Diagrama de colaboración
ene-09
alb@uniovi.es
200
Ejemplo
Creación de un consumidor de mensajes síncrono
ene-09
alb@uniovi.es
201
Creación de un consumidor de mensajes asíncrono
Método gestor del evento
ene-09
alb@uniovi.es
202
Creación de un consumidor de mensajes asíncrono
ene-09
alb@uniovi.es
203
EJB como clientes de mensajería
EJB como clientes de
mensajería
ene-09
alb@uniovi.es
204
Contenidos
ene-09
alb@uniovi.es
205
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
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
Creación de un bean controlado por mensajes
Código ejemplo
ene-09
alb@uniovi.es
208
Creación de un bean controlado por mensajes
Filtra los mensajes
que llegan
ene-09
alb@uniovi.es
209
Contenidos
ene-09
alb@uniovi.es
210
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
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
ene-09
XML, SOAP
HTTP, SMTP
alb@uniovi.es
212
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
Especificaciones de los servicios web
Requisitos de interoperabilidad
Intercambio de mensajes HTTP y XML
Se necesita cerrar más las posibilidades
ene-09
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
alb@uniovi.es
214
Especificaciones de los servicios web
Arquitectura de WS
ene-09
alb@uniovi.es
215
Especificaciones de los servicios web
Ejemplo mensajes SOAP
Petición
Respuesta
ene-09
alb@uniovi.es
216
Especificaciones de los servicios web
Ejemplo WSDL “hola mundo”
Estructura general
de documento WSDL
ene-09
alb@uniovi.es
217
APIs de Java relacionados con servicios web
APIs java para WS
-
+
Complejidad
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
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
Contenidos
ene-09
alb@uniovi.es
219
Puntos finales servlet JAX-WS
Punto final un Servlet
web.xml
ene-09
alb@uniovi.es
220
Puntos finales EJB JAX-WS
Punto final un EJB
ene-09
alb@uniovi.es
221
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
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
Clientes de servicios Web
Ejemplo
Cliente con proxy dinámico
Cliente con proxy estático
ene-09
alb@uniovi.es
224
Contenidos
ene-09
alb@uniovi.es
225
Seguridad administrada por el contenedor
Conceptos de seguridad
Autenticación
Autorización
Verificar que tiene permiso para la operación que
solicita
Confidencialidad
Asegurar la identidad del usuario
Impedir el espionaje de datos en transporte
Integridad
ene-09
Detectar la corrupción de los mensajes en el
transporte
alb@uniovi.es
226
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
ene-09
SSL (TLS)
alb@uniovi.es
227
Seguridad administrada por el contenedor
Propagación del contexto de
seguridad
ene-09
alb@uniovi.es
228
Seguridad administrada por el contenedor
Seguridad para WEB (HTTPS)
HTTPS = HTTP Secure
HTTP sobre un protocolo de
transporte seguro
ene-09
HTTP SSL TCP
SSL también es conocido
como TLS según IETF
ene-09
Albertoalb@uniovi.es
M.F.A.
229229
Seguridad administrada por el contenedor
SSL (o TLS)
El servidor tiene un certificado
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
opcionalmente el cliente tiene el suyo
Autentificación
Confidencialidad
Integridad
alb@uniovi.es
230
Seguridad administrada por el contenedor
Autenticación administrada
por contenedor web
ene-09
alb@uniovi.es
231
Seguridad administrada por el contenedor
Especificación
ene-09
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
alb@uniovi.es
232
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
Seguridad administrada por el contenedor
web.xml
Roles
Técnicas
ene-09
alb@uniovi.es
234
Seguridad administrada por el contenedor
Tipos de autenticación
soportados
BASIC
DIGEST
FORM
CLIENT-CERT
ene-09
alb@uniovi.es
235
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
ene-09
Action: j_security_check
Login: j_username
Pass: j_password
alb@uniovi.es
236
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
ene-09
Base de datos (tablas: usuarios, roles)
Ficheros XML
Ficheros de propiedades
...
Consultar documentación del
alb@uniovi.es
contenedor
237
Roles y responsabilidades del usuario
Usuarios y roles
ene-09
alb@uniovi.es
238
Roles y responsabilidades del usuario
Autorización basada en
funciones en la capa EJB
ene-09
alb@uniovi.es
239
Utilización del API de seguridad
Métodos de API
Métodos en web:
getUserPrincipal y isUserInRole
Métodos en EJB:
ene-09
getCallerPrincipal y isCallerInRole
alb@uniovi.es
240
Utilización del API de seguridad
API de seguridad de la capa
web
ene-09
alb@uniovi.es
241
Utilización del API de seguridad
API de seguridad de la capa
EJB
ene-09
alb@uniovi.es
242
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
Descargar