Publicado el 21 de Enero del 2019
540 visualizaciones desde el 21 de Enero del 2019
815,9 KB
42 paginas
Experto Universitario Java Enterprise
Servicios Web
Sesión 2: Creación de servicios Web SOAP
Experto Universitario Java Enterprise
Puntos a tratar
• Introducción
• Servicios web desde la vista del servidor
• Implementación del servicio JAX-WS
• Pasos para crear un WS con JAX-WS
• Implementación del servicio con jdk 1.6
• Implementación del servicio con Maven
• Modelo de despliegue de J2EE
• Implementación del servicio con Netbeans
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
2
Experto Universitario Java Enterprise
Introducción
• Los Servicios Web que creemos deberán ofrecer una
serie de operaciones que se invocarán mediante SOAP.
Un servicio, por lo tanto:
• Debe recibir y analizar el mensaje SOAP de petición
• Ejecutará la operación y obtendrá un resultado
• Deberá componer un mensaje SOAP de respuesta con este
resultado y devolverlo al cliente del servicio
• Si tuviésemos que implementar todo esto nosotros
• Desarrollar Servicios Web sería muy costoso
• Se podría fácilmente cometer errores, no respetar al 100%
los estándares y perder interoperabilidad
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
3
Experto Universitario Java Enterprise
Librerías y herramientas
• Para facilitarnos la tarea contamos con:
• Librerías (JAX-WS)
•Nos permitirá leer y componer mensajes SOAP de forma sencilla
•Estos mensajes respetarán el estándar
• Herramientas
•Generarán de forma automática el código para:
1. Leer e interpretar el mensaje SOAP de entrada
2. Invocar la operación correspondiente
3. Componer la respuesta con el resultado obtenido
4. Devolver la respuesta al cliente
• Sólo necesitamos implementar la lógica del servicio
• La infraestructura necesaria para poderlo invocar mediante SOAP se
creará automáticamente
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
4
Experto Universitario Java Enterprise
Capas del servicio
• Las capas Stub y Tie
• Se encargan de componer e interpretar los mensajes SOAP que se intercambian
• Utilizan la librería JAX-WS
• Se generan automáticamente
• El cliente y el servicio
• No necesitan utilizar JAX-WS, este trabajo lo hacen las capas anteriores
• Los escribimos nosotros
• Para ellos es transparente el método de invocación subyacente
• El servicio es un componente que implementa la lógica (clase Java)
• El cliente accede al servicio a través del stub, como si se tratase de un objeto Java local
que tiene los métodos que ofrece el servicio
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
5
Experto Universitario Java Enterprise
Vista del servidor de un servicio Web
Tipos de contenedores:
web (servlet JAX-WS)
ejb (stateless session EJB)
WSDL: proporciona
una descripción del WS
SEI: Interfaz que define los métodos implementados
por el Service Implementation Bean
Service Implementation Bean: Clase java que
proporciona la lógica del WS
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Cada Port tiene una dirección física
particular asociada. Un Port asocia
una dirección con la implementación
del servicio
Creación de servicios Web SOAP
6
Experto Universitario Java Enterprise
Implementación del servicio Web
• La implementación del servicio web (Service
Implementation Bean) puede variar dependiendo del
contenedor en el que despleguemos el componente
Port, pero en general es una clase java anotada con
javax.jws.WebService
• Modelo de servlets (el componente Port reside en un
contenedor Web)
• Modelo EJB (el componente Port reside en un contenedor
EJB)
• El componente Port asocia una dirección de puerto con
Implementación del servicio
la implementación del servicio
componente
Port
<service name="HelloService">
<port name="HelloPort" binding="tns:HelloPortBinding">
<soap:address location="http://localhost:8080/HolaServer/Hola"/>
</port>
</service>
Dirección de puerto
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
7
Experto Universitario Java Enterprise
El modelo de programación JAX-WS
• Podemos elegir dos puntos de partida:
• Una clase Java que implementa el servicio Web
• Tendremos la seguridad de que la clase que implementa el
servicio tiene los tipos de datos adecuados
• Tenemos menos control sobre el esquema XML generado
• Un fichero WSDL
• Tenemos un control total sobre el esquema que se está
usando
• Tenemos menos control sobre el endpoint del servicio
generado y de las clases que utiliza
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
8
Experto Universitario Java Enterprise
Pasos para crear un WS con JAX-WS
• El punto de partida para desarrolar un WS es una clase Java
anotada con javax.jws.WebService.
• Dicha anotación define la clase como un endpoint del servicio
web
• Un SEI (Service Endpoint Interface) es una interfaz Java que
declara los métodos que el cliente puede invocar del servicio.
No es necesario declarar dicha interfaz de forma explícita.
• Los pasos básicos para crear un WS JAX-WS (o endpoint JAX-
WS) son:
1.Codificar la clase que implementa el servicio
2.Compilar la clase que implementa el servicio
3.Empaquetar los ficheros en un war
4.Desplegar el war. Los artefactos del WS necesarios para
comunicarse con los clientes serán generados por Glassfish
durante el desplegue
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
9
Experto Universitario Java Enterprise
Anotaciones JAX-WS
• La clase que implementa el servicio debe hacer uso de las
anotaciones de JAX-WS para servicios web
• Anotaciones que pueden utilizarse:
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
10
Experto Universitario Java Enterprise
Anotaciones JAX-WS
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
11
Experto Universitario Java Enterprise
Anotaciones JAX-WS
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
12
Experto Universitario Java Enterprise
Tipos de datos compatibles
• Los tipos de datos que podemos utilizar como tipo de los
parámetros y valor de retorno de los métodos del servicio
serán los tipos soportados por JAXB.
• Tipos de datos básicos y wrappers de estos tipos
java.lang.Boolean
java.lang.Byte
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Short
java.lang.Character
boolean
byte
double
float
int
long
short
char
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
13
Experto Universitario Java Enterprise
Otros tipos de datos y estructuras
• Otros tipos de datos
java.lang.String
java.math.BigDecimal
java.math.BigInteger
• Colecciones y genéricos
java.util.Calendar
java.util.Date
java.awt.Image
Listas: List
ArrayList
LinkedList
Stack
Vector
Mapas: Map
HashMap
Hashtable
Properties
TreeMap
Conjuntos: Set
HashSet
TreeSet
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
14
Experto Universitario Java Enterprise
Requisitos para las clases que implementan el endpoint
• Podremos utilizar objetos de clases propias, siempre
que estas clases cumplan
• Deben tener un constructor void público
• No deben implementar javax.rmi.Remote
• Todos sus campos deben
•Ser tipos de datos soportados por JAXB
•Los campos públicos no deben ser ni final ni transient
•Los campos no públicos deben tener sus correspondientes
métodos get/set.
• Si no cumplen esto deberemos construir serializadores
• También podemos utilizar arrays y colecciones de
cualquiera de los tipos de datos anteriores
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
15
Experto Universitario Java Enterprise
Ejemplo de endpoint JAX-WS
package es.ua.jtech.servcweb.conversion;
import javax.jws.WebService;
@WebService
public class ConversionSW {
public ConversionSW() { }
public int euro2ptas(double euro) {
return (int) (euro * 166.386);
}
public double ptas2euro(int ptas) {
return ((double) ptas) / 166.386;
}
}
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
16
Experto Universitario Java Enterprise
Ejemplos de anotaciones
package utils;
import javax.jws.*;
@WebService(name=“MiServicioPortType", serviceName=“MiServicio",
targetNamespace="http://jtech.ua.es")
public class MiServicio {
@Resource private WebServiceContext context;
@WebMethod(operationName="eurosAptas")
@WebResult(name="ResultadoPtas", targetNamespace="http://jtech.ua.es")
public int euro2ptas(@WebParam(name="CantidadEuros",
targetNamespace="http://jtech.ua.es")
double euro) { ... }
@Oneway()
@WebMethod()
public void publicarMensaje(String mensaje) { ... }
}
Servicios Web
© 2012-2013 Depto. Ciencia de la Computación e IA
Creación de servicios Web SOAP
17
Experto Universitario Java Enterprise
Modelo EJB
• Podemos utilizar un Stateless Session Bean para
implementar el servicio. En este caso, el componente
Port residirá en un contenedor EJB
• Se utilizan las mismas anotaciones y normas y requisitos
que hemos mencionado
• Se utiliza la anotación @Stateless
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.ejb.Stateless;
@WebService
@Stateless()
public class Hello {
public void Hello() {}
@WebMethod
public String sayHello(String name) {
return “Hola, “+ message + name + ".";
}
}
Servicios Web
© 2012-2013 Depto. Ciencia de la Comp
Comentarios de: Sesión 2: Creación de servicios Web SOAP - Servicios Web (0)
No hay comentarios