60
DEPARTAMENTO DE SISTEMAS Java API for XML Web Services (JAX-WS) 1

Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

  • Upload
    others

  • View
    55

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

DEPARTAMENTO DE SISTEMAS

Java API for XML Web Services (JAX-WS)

1

Page 2: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 3: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 4: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 5: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

DEPARTAMENTO DE SISTEMAS

Ciclo de Vida de un SW

•  Ciclo de vida de Servicio Web

5

Tomado de [6]

Page 6: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 7: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 8: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 9: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 10: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

DEPARTAMENTO DE SISTEMAS

Propiedades SW

•  Propiedades de un servicio o  Visibilidad o  Interacción entre servicios o  Contrato o  Interfaz

10

Page 11: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 12: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 13: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 14: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 15: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 16: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 17: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 18: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 19: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 20: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 21: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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]

Page 22: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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.

Page 23: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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]

Page 24: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 25: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 26: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

DEPARTAMENTO DE SISTEMAS

•  Modelo de Datos de un WSDL

26 Tomado de [8]

Web Services Description Language (WSDL)

Page 27: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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)

Page 28: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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)

Page 29: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 30: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 31: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 32: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 33: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 34: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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]

Page 35: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 36: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 37: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 38: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 39: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 40: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 41: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 42: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 43: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 44: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 45: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 46: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

DEPARTAMENTO DE SISTEMAS

Tomado de [9]

Anotaciones API JAX-WS

Page 47: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 48: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 49: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 50: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 51: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 52: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 53: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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]

Page 54: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 55: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

DEPARTAMENTO DE SISTEMAS

•  Elementos de @WebServiceRef

Tomado de [1]

Invocar un servicio WEB desde un EJB

Page 56: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 57: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 58: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 59: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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

Page 60: Java API for XML Web Services (JAX-WS)isis2503/dokuwiki/lib/exe… · • SOAP • Web Services Description Language (WSDL) • Descubrimiento de servicios • API JAX-WS • Anotaciones

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