DEPARTAMENTO DE SISTEMAS
Java API for XML Web
Services (JAX-WS)
1
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
2
Introducción
DEPARTAMENTO DE SISTEMAS
• Qué es un servicio
“Un servicio es un mecanismo que permite el acceso a
una o más capacidades, donde el acceso es
proporcionado mediante el uso de una interfaz prescrita
y es ejecutada consistentemente con unas restricciones
y políticas especificadas en la descripción del servicio.”
Modelo de referencia SOA de OASIS.
• Qué es un Servicio Web
Un servicio web es una plataforma estándar que permite
la interoperabilidad entra aplicaciones con clientes que
pueden estar fuera de la red.
3
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
4
Ciclo de Vida de un SW
DEPARTAMENTO DE SISTEMAS
• Ciclo de vida de Servicio Web
Tomado de [6]
5
Ciclo de Vida de un SW
DEPARTAMENTO DE SISTEMAS
1.
2.
3.
4.
5.
6.
Se define un servicio web con las funcionalidades de un
componente
Se expone el servicio WEB a través de su interfaz WSDL
El servicio se registra en un UDDI (Universal Description,
Discovery and Integration), para que pueda ser ubicado por
los consumidores.
El consumidor se conecta al UDDI para ubicar el servicio que
requiere
Cuando se encuentra el servicio WEB, se obtiene la WSDL y
de esta forma se identifican las funcionalidades que provee.
A través de SOAP el consumidor solicita la información al
servicio WEB
El proveedor de servicios WEB con SOAP empaqueta la
información para enviarla al consumidor
6
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
7
Beneficios SW
DEPARTAMENTO DE SISTEMAS
• Beneficios
o
o
o
o
o
Reusabilidad de funciones
Desacoplamiento entre el componente que contiene la
lógica y cliente que lo invoca
Compatibilidad porque se utiliza XML como lenguaje
estándar
Apoya la interoperabilidad entre servicios que son
expuestos por distintas aplicaciones, con distintos
lenguajes, plataformas y sistemas operativos
Su desarrollo e implementación son bastante sencillos,
comparados con protocolos de integración anteriores
(CORBA, RMI)
8
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
9
Propiedades SW
DEPARTAMENTO DE SISTEMAS
• Propiedades de un servicio
o
o
o
o
Visibilidad
Interacción entre servicios
Contrato
Interfaz
10
Propiedades SW
DEPARTAMENTO DE SISTEMAS
o
Visibilidad
Tanto el consumidor como el proveedor del servicio,
deben tener información para permitir que se conozca
la existencia del otro.
Se debe conocer la descripción del servicio y las
políticas de los servicios
El proveedor de servicios debe estar disponible para
ser utilizado por el consumidor.
La relación entre los participantes del servicio debe
permitir interactuar e intercambiar información
11
Propiedades SW
DEPARTAMENTO DE SISTEMAS
o
Interacción entre servicios
Definir la información que se puede intercambiar y
definir un formato estándar para el intercambio de esta
información.
Definir los términos sintácticos y semánticos de la
información y de esta manera facilitar la comunicación
entre los servicios.
Conocer las acciones invocadas entre el servicio y el
proceso de interacción con el servicio.
Conocer las acciones invocadas contra el servicio, de
tal manera que se pueda identificar si el estado del
servicio o comportamiento se afectan.
12
Propiedades SW
DEPARTAMENTO DE SISTEMAS
•
Contrato
o
•
Representa un acuerdo entre dos o más partes.
Puede ser interpretado como lo que se permite
entre las dos partes.
Interfaz
o Permite la interacción con un servicio, se
incluye la especificación de los protocolos,
comandos e información que es intercambiada
en las interacciones y los efectos que se
generan luego de estas.
13
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
14
Componentes SW
DEPARTAMENTO DE SISTEMAS
• Componentes de servicio WEB
o
Proveedor de servicio: “un proveedor de servicio es un
participante que ofrece un servicio que permite a algunas
operaciones ser usadas por otros participantes”
o
Consumidor de Servicio: “un consumidor de servicio es un
participante que interactúa con un servicio para acceder a
la operación dirigida a una necesidad.”
15
Componentes SW
DEPARTAMENTO DE SISTEMAS
1
Publicación
del Servicio
Proveedor del
Servicio
WSDL
Directorio de
Servicios UDDI
2
3
Definición
del Servicio
Descubrimiento
del Servicio
Consumidor el
Servicio
4
Invocación y
respuesta
SOAP
Componentes SW
DEPARTAMENTO DE SISTEMAS
o
o
Servicio de Mensajería: Mensajes enviados
entre el cliente y el servicio en XML, cumpliendo
el estándar de estructura de mensajes
(www.w3.org/TR/soap/)
Descripción del servicio:
Cada servicio web se describe a través de un
documento XML
En este documento se describen los parámetros
(opcionales u obligatorios), tipos de datos y valor que
se retorna
Un cliente consume el servicio, a través de un archivo
WSDL (www.w3.org/TR/wsdl).
17
Componentes SW
DEPARTAMENTO DE SISTEMAS
o
Servicio de descubrimiento.
o
El servicio se debe registrar en un UDDI
Proveer una WSDL requerida para acceder al servicio
(www.uddi.org/specification.html).
Servicio de transporte
Mecanismo responsable de transportar mensajes
entre el cliente y el servicio
El más común es el protocolo HTTP
18
Implementaciones SW
DEPARTAMENTO DE SISTEMAS
• Implementaciones Servicios WEB
o
REST (Representational State Transfer)
o
XML-RPC (Extensible Markup Language–Remote
Procedure Call)
o
SOAP
19
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
20
SOAP
DEPARTAMENTO DE SISTEMAS
• Simple Object Access Protocol (SOAP)
o
o
o
Es un protocolo distribuido similar a CORBA y
Java RMI
Permite que las aplicaciones intercambien
mensajes sobre un protocolo de red,
comúnmente HTTP
SOAP utiliza XML, estos documentos contienen
varios elementos como
Sobre
Cabecera
Cuerpo
21
Tomado de [5]
SOAP
DEPARTAMENTO DE SISTEMAS
• Mensajes SOAP
Header (opcional):
Contiene datos de
infraestructura específica
de la aplicación
Envelope (obligatorio):
Declara un namespace y
puede incluir el
encoding.
Body (obligatorio):
Contiene los datos de los
mensajes que se
intercambian
Tomado de [5]
22
SOAP
DEPARTAMENTO DE SISTEMAS
• Estructura de mensaje SOAP
Define namespace y
enconding
Define información de
seguridad, datos requeridos
para enviar el mensaje.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/
envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<addBid xmlns="http://actionbazaar.com/Bidding">
<user-id>viper</user-id>
<item-id>100</user-id>
<bid-price>2000.24</bid-price>
Body: Define el método y los
</addBid>
parámetros requeridos
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Tomado de [1]
23
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
24
Web Services Description Language (WSDL)
DEPARTAMENTO DE SISTEMAS
o
o
o
o
Es un documento XML, que provee toda la
información requerida para localizar y acceder a
un servicio web.
El proveedor del servicio es el responsable de
definir el WSDL.
Especifica el tipo de mensaje, puertos,
operaciones soportadas, tipos de datos
No hay un mapeo directo en JAVA y WSDL. Es
soportado por la especificación XML Binding
(JAXB) 2.0 (
http://download-west.oracle.com/docs/cd/B25221_04/web.1013/
b25603/apptypemapping.htm#BABCCAHA)
25
Web Services Description Language (WSDL)
DEPARTAMENTO DE SISTEMAS
• Modelo de Datos de un WSDL
Tomado de [8]
26
Web Services Description Language (WSDL)
DEPARTAMENTO DE SISTEMAS
<?xml version = '1.0' encoding = 'UTF-8'?> <definitions xmlns=http://schemas.xmlsoap.org/wsdl/” xmlns:soap=http://ejb3inaction.example.buslogic/ >
<types> <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<element name="addBid" type="tns:addBid"/>
<complexType name="addBid">
<sequence>
<element name="userId" type="string" nillable="true"/>
<element name="itemId" type="long" nillable="true"/>
<element name="bidPrice" type="double" nillable="true"/>
</sequence>
</complexType>
<element name="addBidResponse" type="tns:addBidResponse"/>
<complexType name="addBidResponse">
<sequence> <element name="return" type="long" nillable="true"/> </sequence>
</complexType>
</schema> </types>
<message name="PlaceBidBeanPlaceBidBeanPortType_addBid">
<part name="parameters" element="tns:addBid"/>
</message>
<portType name="PlaceBidBean">
<operation name="addBid">
<input message="tns:PlaceBidBeanPortType_addBid"/>
<output message="tns:PlaceBidBeanPortType_addBidResponse"/>
</operation>
</portType>
<binding name="PlaceBidBeanSoapHttp“ type="tns:PlaceBidBean">
<soap:binding style="document“ transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="addBid">
<soap:operation soapAction=""/>
<input> <soap:body use="literal"/> </input>
<output> <soap:body use="literal"/> </output>
</operation>
</binding>
<service name="PlaceBidBeanService">
<port name="PlaceBid“ binding="tns:PlaceBidBeanSoapHttp">
<soap:address location="${oracle.scheme.host.port.and.context}/PlaceBid"/>
27
</port>
</service>
Tomado de [1]
</definitions>
1
2
3
4
5
Web Services Description Language (WSDL)
DEPARTAMENTO DE SISTEMAS
1. ComplexType. Define los tipos de datos que se utilizan cuando el
servicio web es invocado, estos tipos de datos son utilizados por los
métodos.
2. Message. Define los mensajes que soporta el servicio. El message
part es una parte del mensaje, se pueden definir parámetros de
entrada y datos de salida.
o
En el ejemplo, el mensaje
PlaceBidBeanPlaceBidBeanPortType_addBid, se recibe
como parámetro un valor de tipo addBid, definido en el
complexType.
3. Port Type. Define las operaciones que pueden ser ejecutadas y los
mensajes relacionados. Para cada opeación define las entradas y
salidas (input y output)
4. Binding. Los detalles de un servicio como: mensajes, operaciones y
protocolos son definidos a través del binding.
5. En el ejemplo se utiliza el binding PlaceBidBeanSoapHttp.
28
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
29
Descubrimiento de servicios
DEPARTAMENTO DE SISTEMAS
• Universal Description, Discovery, and
Integration (UDDI)
o
o
o
o
Permite publicar y descubrir un servicio web
Utiliza el protocolo SOAP para el descubrimiento de un
servicio
Se utiliza de forma opcional, si es para SOA se utilizan
otros mecanismos de descubrimiento.
Maneja los siguientes estructuras de datos
BusinessEntity: Contiene información acerca de la
empresa que publica el servicio
BusinessService: Contiene descripción del servicio
BindingTemplate: Información técnica que permite
determinar los puntos de entrada y las
especificaciones para invocar al servicio
30
Descubrimiento de servicios
DEPARTAMENTO DE SISTEMAS
• Proceso de descubrimiento
Consumido
r
UDDI
Servicio Web
Proveedor
Define servicio WEB
Registra el servicio,
provee un WSDL para que
sea invocado
Busca servicio
Retorna WSDL para
invocar al servicio
Utiliza WSDL para invocar con SOAP
el servicio web
Tomado de [1]
1.
2.
3.
El proveedor define el servicio y lo publica en el UDDI, incluyendo el WSDL
para que un cliente se comunique con el servicio
Un cliente puede buscar el servicio a través del UDDI
Cuando se ubica el servicio, el cliente obtiene el WSDL crea un binding al
servicio y lo invoca usando la descripción que se publica
31
Transporte de mensajes
DEPARTAMENTO DE SISTEMAS
• Los mensajes son transmitidos por el
protocolo de red HTTP
o
Utilizado para comunicación en la WEB
• Se pueden utilizar otros protocolos como:
FTP
32
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
33
API JAX-WS
DEPARTAMENTO DE SISTEMAS
•
•
•
•
El API de Java para servicios web basados en XML es JAXWS 2.0, es la especificación que define el estándar para
servicios web en JEE, es una extensión del API para XMLRPC (JAX-RPC) 1.0.
Es una tecnología para construir servicios web y clientes que
se comunican utilizando XML
Permite a los desarrolladores escribir orientado a mensajes.
Ej: servicios web orientado a RPC
La invocación a un servicio web es representada con
protocolos basados en XML como SOAP, sobre el protocolo
de red HTTP
34
Tomado de [2]
API JAX-WS
DEPARTAMENTO DE SISTEMAS
• Beneficios JAX-WS
o
o
o
o
o
Simplifica el desarrollo de aplicaciones que
exponen servicios WEB
Plataforma independiente de JAVA
Permite utilizar servicios de distintas
tecnologías, no todos deben ejecutarse en
plataforma JAVA
Usa tecnologías definidas por el consorcio W3C
Utiliza HTTP, SOAP y WSDL para describir el
servicio.
35
API JAX-WS
DEPARTAMENTO DE SISTEMAS
• Permite exponer como servicios web a
clases java, incluyendo los beans de sesión
en EJB 3.
Servicio web java
o Servicio web EJB
• Ventajas de Servicio web EJB
o Incluye transacción declarativa y seguridad
o Se puede interceptar el servicio si se requiere
o Exponer aplicaciones de negocio
o Uso de protocolos adicionales como RMI
o
36
API JAX-WS
DEPARTAMENTO DE SISTEMAS
• Comparación entre un servicio web java y un
servicio web EJB
Característica
Servicio web Java
Servicio web EJB
POJO
Si
Si
Dependencia de
inyección para
recursos, unidades de
persistencia entre otros
Si
Si
Métodos de ciclo de
vida
Si
Si
Transacción
Declarativa
No
Si
Seguridad Declarativa
No
Si
Requiere una
herramienta externa
para procesar las
anotaciones
Si
El contenedor no lo
requiere
37
API JAX-WS
DEPARTAMENTO DE SISTEMAS
• Proceso para generar un servicio web
Proceso convencional
Con JAX-WS
Generar el WSDL para el servicio web
Definir endpoint en la interfaz del
servicio
Identificar el endpoint en el archivo
ejb-jar.xml.
Generado automáticamente por el
contenedor durante el despliegue del
proyecto
Empaquetar el proyecto con el
archivo webservices.xml
38
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
39
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
• Utiliza anotaciones para definir un servicio
WEB
o
o
o
o
o
o
o
@WebService
@SOAPBinding
@WebMethod
@WebParam
@WebResult
@OneWay
@HandlerChain
40
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
• Ejemplo JAX-WS
@WebService(targetNamespace= "urn:ActionBazaarPlaceBidService")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
@Stateless(name = "PlaceBid")
public class PlaceBidBean implements PlaceBid {
@WebService: Expone
el EJB como un servicio
web
@PersistenceContext private
EntityManager em;
public PlaceBidBean() { }
@WebMethod
@WebResult(name = "bidNumber")
public Long addBid(
@WebParam(name = "User") String userId,
@WebParam(name = "Item") Long itemId,
@WebParam(name = "Price") Double bidPrice) {
return persistBid(userId, itemId, bidPrice);
}
@WebMethod: Expone
el método en el servicio
web
Controlan parámetros en
el WSDL
private Long persistBid(String userId, Long itemId, Double bidPrice)
{…}
}
Tomado de [1]
41
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
• @WebService
o
o
o
o
o
Indica que una clase Java está implementando un servicio
Web o indica que una SEI (Service Endpoint Interface)
está implementando una interfaz de servicio Web.
Utilizado en un bean o en una interfaz de una clase
Cuando se utiliza sobre un bean, el contenedor genera la
interfaz
Cuando se utiliza en la interfaz, los métodos públicos
serán expuestos en el servicio web
Tener cuidado en utilizar la anotación en interfaces
remotas, esto no es parte del estándar
42
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
• Elementos de la anotación @WebService
@WebService
public interface PlaceBidWS {
public Long addBid(String bidderId, Long itemId, Double bidPrice);
}
@Stateless(name = "PlaceBid")
public class PlaceBidBean implements PlaceBidWS, PlaceBid {... }
Espacio de nombres
relacionado con el SW
@Target({TYPE})
public @interface WebService {
String name() default "";
String targetNamespace() default "";
String serviceName() default "";
String wsdlLocation() default "";
String endpointInterface() default "";
String portName() default "";
};
Tomado de [1]
Nombre del servicio WEB
Localización de la WSDL
nombre de la interfaz de
punto final de servicio que
define el contrato de
servicio web
43
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
• @SOAPBinding
o
Indica que el servicio WEB utiliza el protocolo SOAP
o
@SOAPBinding.style: indica que el servicio web debe
utilizar un documento de estilo
o Modifica el atributo style del elemento soap:binding del
WSDL
o
@SOAPBinding.use: indica que el mensaje para el SW
debe ser enviado en formato literal
o
Afecta el atributo use del elemento soap:body
44
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
•
Descripción interfaz de @SOAPBinding
@Retention(value = RetentionPolicy.RUNTIME)
@Target({TYPE})
public @interface SOAPBinding {
public enum Style {
DOCUMENT,
RPC
};
Style style() default Style.DOCUMENT;
public enum Use {
LITERAL,
ENCODED
};
Use use() default Use.LITERAL;
Estilo del servicio WEB
Estilo del mensaje.
Utilizar LITERAL cuando
se trabaja con clientes
que no son desarrollados,
el Encoded puede
presentar problemas.
public enum ParameterStyle {
Estilo de los parámetros
BARE,
WRAPPED
};
ParameterStyle parameterStyle() default ParameterStyle.WRAPPED;
}
Tomado de [1]
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
Tomado de [9]
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
•
@WebMethod
•
@javax.jws.WebMethod
•
Expone el método como parte de un SW
@Target({METHOD})
public @interface WebMethod {
String operationName() default "";
String action() default "" ;
boolean exclude() default false;
};
•
Si no se quiere exponer algún método se puede
utilizar @WebMethod(exclude=“true”)
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
•
•
Con esta anotación se puede definir el nombre de la
operación con el atributo operationName y la acción
SOAP action que se utiliza en WSDL
El elemento action determina el elemento en el
encabezado de petición HTTP y define el destino del
mensaje
@WebMethod(operationName = "addNewBid",
action = "http://actionbazaar.com/NewBid")
public Long addBid(...) {
}
Tomado de [9]
<portType name = "PlaceBidBean">
<operation name = "addNewBid">
...
</operation>
</portType>
<operation name = "addNewBid">
<soap:operation soapAction =
actionbazaar.com/NewBid"/>
...
</operation>
"http://
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
•
@WebParam
•
•
@javax.jws.WebParam
Se puede utilizar en conjunto con la anotación
@WebMethod para definir los parámetros de un
mensaje generado en el WSDL
@Target({PARAMETER})
public @interface WebParam {
public enum Mode { IN, OUT, INOUT };
String name() default "";
String targetNamespace() default "";
Mode mode() default Mode.IN;
boolean header() default false;
String partName() default "";
};
Tomado de [1]
Define nombre del
parámetro
Define el namespace del
XML, si no se define se
toma el del servicio web
Especifica el tipo de
parámetro
Incluye el mensaje como
parte de la cabecera en el
WSDL
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
•
Ejemplo @WebParam
@WebMethod
public Long addBid(
@WebParam(name = "user",mode = WebParam.Mode.IN)
String userId, ...) {
...
}
@WebParam(name = "user", mode = WebParam.Mode.INOUT)
Holder<String> userId, ...) {
...
}
Tomado de [1]
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
•
@WebResult
•
Opera en conjunto con @WebMethod se utiliza para
especificar el nombre del mensaje de retorno en el
WSDL
@WebMethod
@WebResult(name = "bidNumber")
public Long addBid(...){}
public @interface WebResult {
String name() default "return";
String targetNamespace() default "";
boolean header() default false;
String partName() default "";
};
Tomado de [1]
Define nombre del valor
retornado en el WSDL
Define el namespace para
el valor retornado
Incluye el mensaje como
parte de la cabecera en el
WSDL
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
52
Invocar un servicio WEB desde un EJB
DEPARTAMENTO DE SISTEMAS
@WebServiceRef.
•
•
Se puede invocar un servicio web desde un MDB o un bean
de sesión
@Stateless
public class TrackOrderBean implements TrackOrder {
@WebServiceRef(TrackDeliveryService.class)
private TrackDeliverySEI deliveryService;
Inyecta servicio web,
especificando la WSDL
public String checkOrderDeliverStatus(String shipId) {
...
String deliveryStatus =
Invoca servicio web
deliveryService.checkDeliveryStatus(shipId);
...
}
}
Tomado de [1]
Invocar un servicio WEB desde un EJB
DEPARTAMENTO DE SISTEMAS
•
Ejemplo @WebServiceRef
import javax.xml.ws.WebServiceRef ;
import actionbazaarplacebidservice.PlaceBidService;
Genera interfaz de
servicio
@WebServiceRef(wsdlLocation="http://localhost:8080/PlaceBidService/PlaceBidBean?
WSDL")
Inyecta servicio web
private static PlaceBidService placeBidService;
public static void main(String [] args) {
try {
actionbazaarplacebidservice.PlaceBidBean placeBid =
placeBidService.getPlaceBidBeanPort();
System.out.println("Bid Successful, BidId Received is:"
+placeBid.addBid("dpanda",
Long.valueOf(9001), 2000005.50 ));
} catch (Exception ex)
{
ex.printStackTrace();
}
}
Tomado de [1]
Invoca un método del
servicio web
Invocar un servicio WEB desde un EJB
DEPARTAMENTO DE SISTEMAS
•
Elementos de @WebServiceRef
Tomado de [1]
Agenda
DEPARTAMENTO DE SISTEMAS
•
•
•
•
•
•
•
Introducción
• Ciclo de Vida de un SW
• Beneficios SW
• Propiedades SW
• Componentes SW
SOAP
Web Services Description Language (WSDL)
Descubrimiento de servicios
API JAX-WS
• Anotaciones API JAX-WS
Invocar un servicio WEB desde un EJB
SOA
56
SOA
DEPARTAMENTO DE SISTEMAS
• SOA (Arquitectura Orientada a Servicios)
“Es un paradigma para organizar y utilizar habilidades distribuidas
que pueden estar bajo el control de diferentes dominios de
propiedad” Modelo de referencia SOA
“Conjunto de componentes que pueden ser invocados, cuyas
descripciones de interfaces se pueden publicar y descubrir”
W3C
“SOA es un estilo de arquitectura que promueve descomponer la
lógica funcional de una aplicación en unidades autónomas
denominadas servicios” W3C
57
SOA
DEPARTAMENTO DE SISTEMAS
CLIENTES
GRUPO EJECUTIVO
PORTAL
BAM
Proceso: Gestión
solicitud crédito
BPM
Crear
cliente
Dashboard,
KPI (Key Performance Indicator)
Realizar
Análisis
crediticio
CRM
SERVICIOS
Crear
Crédito
Validar
Riesgo
Crédito
Riesgo
Desembolsar
crédito
Core Bancario
EIS
EMPLEADOS
Tomado de Presentación: M.C. Juan Carlos Olivares Rojas - SEP
SOA
DEPARTAMENTO DE SISTEMAS
Adeudos Historial
Crédito
Componetes
de Negocio
Reutilizables
Servicios
Servicio
Clientes
Detección
de Fraudes
Checa
Crédito
Fondo
Cheques Retiro
Acceso
Multiplataforma
Servicio
de Acceso
Inversiones
Reutilizables
Cálculo de
Intereses
Checa
Inversiones
Internet
Servicio
Historial
Servicio
Datos
Fuentes de
Información
CRM
Bancos
Finanzas
DWH
Tomado de Presentación: M.C. Juan Carlos Olivares Rojas - SEP
Bibliografía
DEPARTAMENTO DE SISTEMAS
1.
EJB 3 in action. Panda Debu, Rahman Reza, Lane Derek. Manning. 2007.
2.
The Java™ EE 5 Tutorial. For Sun Java System Application Server Platform
Edition 9.1. 2008.
3.
EJB 3 Developer Guide. Michael Sikora. Packt Publishing. BIRMINGHAM –
MUMBAI. 2008
4.
http://www.w3.org/TR/wsdl20-primer/
5.
http://www.w3.org/TR/soap12-part0/#intro
6.
http://www.montejava.es/articulo14.asp
7.
Modelo de referencia SOA
8.
http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdlv2.htm
9.
SOA using Java Web Services. Mark D. Hansen. Prentice Hall. 2007
60
Puede agregar este documento a su colección de estudio (s)
Iniciar sesión Disponible sólo para usuarios autorizadosPuede agregar este documento a su lista guardada
Iniciar sesión Disponible sólo para usuarios autorizados(Para quejas, use otra forma )