Upload
others
View
55
Download
0
Embed Size (px)
Citation preview
DEPARTAMENTO DE SISTEMAS
Java API for XML Web Services (JAX-WS)
1
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Introducción
• 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
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Ciclo de Vida de un SW
• Ciclo de vida de Servicio Web
5
Tomado de [6]
DEPARTAMENTO DE SISTEMAS
Ciclo de Vida de un SW
1. Se define un servicio web con las funcionalidades de un componente
2. Se expone el servicio WEB a través de su interfaz WSDL 3. El servicio se registra en un UDDI (Universal Description,
Discovery and Integration), para que pueda ser ubicado por los consumidores.
4. El consumidor se conecta al UDDI para ubicar el servicio que requiere
5. 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
6. El proveedor de servicios WEB con SOAP empaqueta la información para enviarla al consumidor
6
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Beneficios SW
• Beneficios o Reusabilidad de funciones o Desacoplamiento entre el componente que contiene la
lógica y cliente que lo invoca o Compatibilidad porque se utiliza XML como lenguaje
estándar o Apoya la interoperabilidad entre servicios que son
expuestos por distintas aplicaciones, con distintos lenguajes, plataformas y sistemas operativos
o Su desarrollo e implementación son bastante sencillos, comparados con protocolos de integración anteriores (CORBA, RMI)
8
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Propiedades SW
• Propiedades de un servicio o Visibilidad o Interacción entre servicios o Contrato o Interfaz
10
DEPARTAMENTO DE SISTEMAS
Propiedades SW
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
DEPARTAMENTO DE SISTEMAS
Propiedades SW
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
DEPARTAMENTO DE SISTEMAS
Propiedades SW
• 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
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Componentes SW
• 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
DEPARTAMENTO DE SISTEMAS
Componentes SW
Proveedor del Servicio
Consumidor el Servicio
Directorio de Servicios
Publicación del Servicio
Descubrimiento del Servicio
Invocación y respuesta
1
3
2
UDDI
4
SOAP
Definición del Servicio
WSDL
DEPARTAMENTO DE SISTEMAS
Componentes SW
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/)
o 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
DEPARTAMENTO DE SISTEMAS
Componentes SW
o Servicio de descubrimiento. El servicio se debe registrar en un UDDI Proveer una WSDL requerida para acceder al servicio (www.uddi.org/specification.html).
o Servicio de transporte Mecanismo responsable de transportar mensajes
entre el cliente y el servicio El más común es el protocolo HTTP
18
DEPARTAMENTO DE SISTEMAS
Implementaciones SW
• Implementaciones Servicios WEB
o REST (Representational State Transfer)
o XML-RPC (Extensible Markup Language–Remote Procedure Call)
o SOAP
19
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
SOAP
• Simple Object Access Protocol (SOAP) o Es un protocolo distribuido similar a CORBA y
Java RMI o Permite que las aplicaciones intercambien
mensajes sobre un protocolo de red, comúnmente HTTP
o SOAP utiliza XML, estos documentos contienen varios elementos como Sobre Cabecera Cuerpo
21
Tomado de [5]
DEPARTAMENTO DE SISTEMAS
SOAP
• Mensajes SOAP
22
Header (opcional): Contiene datos de infraestructura específica de la aplicación
Body (obligatorio): Contiene los datos de los mensajes que se intercambian
Tomado de [5]
Envelope (obligatorio): Declara un namespace y puede incluir el encoding.
DEPARTAMENTO DE SISTEMAS
SOAP
• Estructura de mensaje SOAP
23
<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>
</addBid> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Define información de seguridad, datos requeridos para enviar el mensaje.
Define namespace y enconding
Body: Define el método y los parámetros requeridos
Tomado de [1]
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Web Services Description Language (WSDL)
o Es un documento XML, que provee toda la información requerida para localizar y acceder a un servicio web.
o El proveedor del servicio es el responsable de definir el WSDL.
o Especifica el tipo de mensaje, puertos, operaciones soportadas, tipos de datos
o 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
DEPARTAMENTO DE SISTEMAS
• Modelo de Datos de un WSDL
26 Tomado de [8]
Web Services Description Language (WSDL)
DEPARTAMENTO DE SISTEMAS
27
<?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"/> </port> </service> </definitions>
1
2
3
4
5
Tomado de [1]
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
Web Services Description Language (WSDL)
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Descubrimiento de servicios
• Universal Description, Discovery, and Integration (UDDI) o Permite publicar y descubrir un servicio web o Utiliza el protocolo SOAP para el descubrimiento de un
servicio o Se utiliza de forma opcional, si es para SOA se utilizan
otros mecanismos de descubrimiento. o 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
DEPARTAMENTO DE SISTEMAS
• Proceso de descubrimiento
1. El proveedor define el servicio y lo publica en el UDDI, incluyendo el WSDL para que un cliente se comunique con el servicio
2. Un cliente puede buscar el servicio a través del UDDI 3. 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
Descubrimiento de servicios
Consumidor
UDDI Servicio Web
Busca servicio Registra el servicio,
provee un WSDL para que sea invocado
Retorna WSDL para invocar al servicio
Utiliza WSDL para invocar con SOAP el servicio web
Tomado de [1]
Proveedor Define servicio WEB
DEPARTAMENTO DE SISTEMAS
Transporte de mensajes
• 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
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
API JAX-WS
• El API de Java para servicios web basados en XML es JAX-WS 2.0, es la especificación que define el estándar para servicios web en JEE, es una extensión del API para XML-RPC (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]
DEPARTAMENTO DE SISTEMAS
API JAX-WS
• Beneficios JAX-WS o Simplifica el desarrollo de aplicaciones que
exponen servicios WEB o Plataforma independiente de JAVA o Permite utilizar servicios de distintas
tecnologías, no todos deben ejecutarse en plataforma JAVA
o Usa tecnologías definidas por el consorcio W3C o Utiliza HTTP, SOAP y WSDL para describir el
servicio.
35
DEPARTAMENTO DE SISTEMAS
API JAX-WS
• Permite exponer como servicios web a clases java, incluyendo los beans de sesión en EJB 3. o 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
36
DEPARTAMENTO DE SISTEMAS
API JAX-WS
• Comparación entre un servicio web java y un servicio web EJB
37
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
DEPARTAMENTO DE SISTEMAS
API JAX-WS
• Proceso para generar un servicio web
38
Proceso convencional Con JAX-WS
Generar el WSDL para el servicio web
Generado automáticamente por el contenedor durante el despliegue del
proyecto
Definir endpoint en la interfaz del servicio
Identificar el endpoint en el archivo ejb-jar.xml. Empaquetar el proyecto con el archivo webservices.xml
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Anotaciones API JAX-WS
• Utiliza anotaciones para definir un servicio WEB o @WebService o @SOAPBinding o @WebMethod o @WebParam o @WebResult o @OneWay o @HandlerChain
40
DEPARTAMENTO DE SISTEMAS
• Ejemplo JAX-WS
41
@WebService(targetNamespace= "urn:ActionBazaarPlaceBidService") @SOAPBinding(style = SOAPBinding.Style.DOCUMENT) @Stateless(name = "PlaceBid") public class PlaceBidBean implements PlaceBid {
@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); }
private Long persistBid(String userId, Long itemId, Double bidPrice) { … }
}
@WebService: Expone el EJB como un servicio web
@WebMethod: Expone el método en el servicio web
Controlan parámetros en el WSDL
Tomado de [1]
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
• @WebService
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.
o Utilizado en un bean o en una interfaz de una clase o Cuando se utiliza sobre un bean, el contenedor genera la
interfaz o Cuando se utiliza en la interfaz, los métodos públicos
serán expuestos en el servicio web o 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
43
@Target({TYPE}) public @interface WebService { String name() default ""; String targetNamespace() default ""; String serviceName() default ""; String wsdlLocation() default ""; String endpointInterface() default ""; String portName() default ""; };
Localización de la WSDL
Nombre del servicio WEB
Espacio de nombres relacionado con el SW
@WebService public interface PlaceBidWS { public Long addBid(String bidderId, Long itemId, Double bidPrice); }
@Stateless(name = "PlaceBid") public class PlaceBidBean implements PlaceBidWS, PlaceBid {... }
Tomado de [1]
nombre de la interfaz de punto final de servicio que define el contrato de servicio web
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;
public enum ParameterStyle { BARE, WRAPPED }; ParameterStyle parameterStyle() default ParameterStyle.WRAPPED;
}
Estilo del servicio WEB
Estilo del mensaje. Utilizar LITERAL cuando se trabaja con clientes que no son desarrollados, el Encoded puede presentar problemas.
Estilo de los parámetros
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
• Si no se quiere exponer algún método se puede utilizar @WebMethod(exclude=“true”)
@Target({METHOD}) public @interface WebMethod {
String operationName() default ""; String action() default "" ; boolean exclude() default false;
};
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(...) { }
<portType name = "PlaceBidBean"> <operation name = "addNewBid">
... </operation>
</portType>
<operation name = "addNewBid"> <soap:operation soapAction = "http://actionbazaar.com/NewBid"/>
... </operation>
Tomado de [9]
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 "";
};
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 Tomado de [1]
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 "";
};
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
Tomado de [1]
Anotaciones API JAX-WS
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
Invocar un servicio WEB desde un EJB
• @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;
public String checkOrderDeliverStatus(String shipId) { ... String deliveryStatus = deliveryService.checkDeliveryStatus(shipId); ... }
}
Inyecta servicio web, especificando la WSDL
Invoca servicio web
Tomado de [1]
DEPARTAMENTO DE SISTEMAS
• Ejemplo @WebServiceRef import javax.xml.ws.WebServiceRef ; import actionbazaarplacebidservice.PlaceBidService;
@WebServiceRef(wsdlLocation="http://localhost:8080/PlaceBidService/PlaceBidBean?WSDL") 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(); }
}
Genera interfaz de servicio
Inyecta servicio web
Invoca un método del servicio web
Tomado de [1]
Invocar un servicio WEB desde un EJB
DEPARTAMENTO DE SISTEMAS
• Elementos de @WebServiceRef
Tomado de [1]
Invocar un servicio WEB desde un EJB
DEPARTAMENTO DE SISTEMAS
Agenda
• 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
DEPARTAMENTO DE SISTEMAS
SOA
• 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
DEPARTAMENTO DE SISTEMAS
SOA
CLIENTES GRUPO EJECUTIVO
Proceso: Gestión solicitud crédito
BPM Dashboard, KPI (Key Performance Indicator)
BAM
Crear cliente
Realizar Análisis crediticio
Validar Riesgo
Crear Crédito
Desembolsar crédito
SERVICIOS
Riesgo Crédito CRM Core Bancario
EMPLEADOS
EIS
PORTAL
Tomado de Presentación: M.C. Juan Carlos Olivares Rojas - SEP
DEPARTAMENTO DE SISTEMAS
SOA
Servicios Reutilizables
Crédito Inversiones
CRM
Servicio Historial
Servicio de Acceso
Checa Crédito
Detección de Fraudes
DWH
Servicio Clientes
Servicio Datos
Internet
Historial Adeudos Cheques Fondo Retiro
Fuentes de Información
Cálculo de Intereses
Checa Inversiones
Bancos Finanzas
Acceso Multiplataforma
Componetes de Negocio
Reutilizables
Tomado de Presentación: M.C. Juan Carlos Olivares Rojas - SEP
DEPARTAMENTO DE SISTEMAS
Bibliografía
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-wsdl-v2.htm
9. SOA using Java Web Services. Mark D. Hansen. Prentice Hall. 2007 60