SlideShare una empresa de Scribd logo
WebServices con JAX-WS, RS

   Haga clic para agregar texto
Que es JAX-WS JAX-RS
   Son los estándares java para el manejo de web
    services y web services REST
   Existen varias implementaciones del estándar como
    JAX-WS:
     Apache CFX
     Glassfish Metro
     Apache Axis2
   También varias de JAX-RS:
       Apache CFX
       Jersey
       RESTEasy
       Restlet
Diferencias




              31/10/10
Estándares WS
   Los web services se guían por estándares liberados por
    OASIS(Organization for the Advancement of Structured
    Information Standards)
   Define servicios como:
       WS-Addressing
       WS-Coordination
       WS-MetadataExchange
       WS-Policy
       WS-ReliableMessaging
       Web Services Security
       WS-SercureConversation
       WS-SecurityPolicy
       WS-Transaction
       WS-Trust
       WS-Federation
Consideraciones

   Las implementaciones difieren entre los estadares
    WS soportados.

   No todos los IDEs se integran fácilmente con cada
    implementación.

   No todas las implementaciones son interoperables
    con otros clientes o servidores.

   La compatibilidad con JDK 1.4 no esta asegurada en
    algunas versiones.
Implementando un WebService

Existen dos aproximaciones para crear un web
 service.

   Desde el WSDL: este aproximación se basa en el
    archivo WSDL para generar las clases JAVA
    necesarias para su implementación, estas clases
    son un esqueleto con las anotaciones necesarias
    para implementar el web service.

   Desde la Clase JAVA: esta aproximación creamos
    la clase debidamente anotada junto con la
    funcionalidad implementada y desde la cual se
    genera el WSDL para que el web service sea
    consumido.
Creando un web service

   Crear un web service con JAX-WS consta de
    realizar las anotaciones necesarias sobre la clase y
    sus métodos para publicarlas.

   Se debe agregar disponibilidad del archivo wsdl de
    descripción del archivo.

   Con estos dos elementos es posible desplegar el
    web service en cualquier contenedor servidor JEE o
    Servlet container.
Visión general de un Web service
Resultado del despliegue
Como funciona

   La implementación de JAX-WS incorpora las
    herramientas necesarias para convertir la clase
    anotada en su respectivo wsdl y clases asociadas al
    request y la response.
     – WSDL to Java, WSDL to JavaScript, Java to
       JavaScript
     – Java to WSDL,XSD to WSDL, WSDL to XML, IDL
       to WSDL
     – SDL to SOAP, WSDL to CORBA, WSDL to
       service
     – WSDL to IDL
     – WSDL Validation
Probando nuestro web service

   Eclipse contiene varias herramientas para probar los
    web services, en este caso se usara Jboss web
    service tester.
Anotaciones disponibles
Anotación         Descripción
@WebService       Marca la clase como la implementación de un web
                  service
@WebMethod        Marca un método de la clase como operación del
                  endpoint
@OneWay           Marca el método como una operación de una sola
                  vía
@WebParam         Se usa para marcar los parámetros del método
                  como accesibles
@WebResult        Mapea el resultado de una operación a un wsdl o
                  xml
@HandlerChain     Anotación para especificar un manejador externo.
                  Por ejemplo un filtro para autenticar el webservice
@SOAPBinding      Establece la configuración del encoding del web
                  service.
@RequestWrapper   Establece la clase la cual contendrá el request
                  durante una petición
Anotaciones disponibles
Anotación             Descripción
@ResponseWrapper      Encapsula la respuesta de un webmethod en una
                      clase especificada
@ServiceMode          Establece si la implementacion JAX-WS procesara
                      todo el mensaje o solo los PayLoads(la parte que
                      esta al rededor del mensaje), por ejemplo validar
                      todo el mensaje, o solo la parte SOAP
@WebEndpoint          Se usa para sobre escribir los metodo getPort
@WebFault             Establece excepciones para las operaciones
@WebServiceClient     Establece la configuracion de un cliente para uin
                      servicio web
@WebServiceProvider   Establece como clase que implementa un archivo
                      wsdl
@XmlRootElement       Mapea una clase a el root element de un archivo
                      xml
@XmlAccessorType      Establece si son las atributos o metodos se
                      serualizan por defecrto
Anotaciones disponibles
Anotación        Descripción

@XmlType         Mapea una clase a los atributos de un
                 archivo xml
@XmlElement      Mapea un atributo a un valor en un
                 archivo xml
@Resource        Es una anotación común utilizada
                 para inyectar el webcontext
@PostConstruct   Es una anotación común que indica un
                 método que debe ejecutarse
                 inmediatamente despues de la
                 inizialicacion
@PreDestruct     Es una anotación común que indica un
                 método que debe ejecutarse
                 inmediatamente antes de la destruccion
Requerimientos para crear un WS

   La clase o la interface que implementa deben estar
    tener sus respectivas anotaciones
   Los métodos publicados no deben ser static o final
   Lo métodos expuestos como webservices deben
    ser anotados con @webmethod
   Los parámetros deben ser compatibles con las
    librerías JAXB (Java Architecture for XML Binding).
    Definir un xml con los datos para construir los
    objetos en tiempo de ejecución a partir de este xml
   La clase implementación, marcada como
    @webservice no deben ser final o abstract
                                         31/10/10
Requerimientos para crear un WS

   La implementación debe tener un constructor por
    defecto sin parámetros
   La clase no debe tener implementación del método
    finalize
   Se tienen disponibles los métodos @PreDestroy y
    @PostConstruct para los eventos de su ciclo de
    vida




                                       31/10/10
Que se debe considerar al desarrollar
un web service
   Los web services son un buen método de
    integración, pero son mas dificiles de mantener en
    un entorno donde proliferan.
   Según el servidor de aplicaciones que utilicemos se
    recomienda utilizar la implementación Jax-WS que
    mejor se integren por ejemplo JBossAS con
    JBossWS o GlassFish con Metro
   En algunos casos los web services pueden llegar a
    ser pesados ya que deben serializar y deserializar
    los datos en XML, validar estas serializaciones y
    encapsular los datos, no se debe delegar sobre
    ellos lógica de negocio de uso continuo.
Que se debe considerar al desarrollar
un web service
   Se debe controlar la proliferación de webservices
    llevando una buena política de gobierno sobre su
    implementación uso y responsabilidades. Se deben
    catalogar su uso, ubicaciones y funcionalidad para
    evitar funcionalidad repetida o funcionalidad oculta.




                                          31/10/10
WebServices con Restful
Introducción




               31/10/10
Introducción




               31/10/10
Que es un web service restful
(Representational State Transfer)
   Especificación jsr-311 donde se define una Api
    para desarrollar web services Restful sobre http
   Permite realizar intercambio de información a
    través de los métodos http (get,put,post,etc..)
   Los métodos http se muestran como una manera
    excelente de interactuar con entidades y sus
    operaciones CRUD




                                           31/10/10
Visión general de servicios REST




                             31/10/10
Anotaciones disponibles
Anotación    Descripción
@Path        url donde respondera el webservice

@Get         Método que responderá a peticiones Get
@Post        Método que responderá a peticiones Post

@Put         Método que responderá a peticiones Put

@Delete      Método que responderá a peticiones Delete

@Head        Método que responderá a peticiones Head

@PathParam   Representa un parametro extraido de el request de
             la url
Anotaciones disponibles
Anotación     Descripción
@QueryParam   Representa un parametro extraido de el query
              reuest

@Consumes     Representa los tipos mimes que recibe el web
              service

@Produces     Representa los tipos mimes que envía el web
              service

@Provider     Representa configuraciones que representan
              configuraciones como el proveedor
              MessageBodyReader o MessageBodyWriter
Webservice REST y parámetros




                          31/10/10
Parámetros por PathParam

   Los parámetros por PathParam son representados
    en la url como:
       http://localhost/ helloservice /{name}

   Los parámetros recibidos se pueden restringir de
    acuerdo a una expresión regula dada.
       @Path(" helloservice /{name: [a-zA-Z][a-zA-Z_0-9]}")
       En caso de no cumplir con la expresión regular el
        servidor responderá con error 404




                                                 31/10/10
QueryParam

   Los parámetros pasados como QueryParam son
    parámetros representados por la url en formato del
    método GET
        http://localhost/ helloservice &param1=valor1?param2=valor2

       http://localhost/myservice?usuario=juan&edad=18

            @GET
             @Produces("text/plain")
             public String sayHello(@DefaultValue(“juan")
           @QueryParam("name") String name) {

                  return "Hello World! “+name;
              }



                                                             31/10/10
Parámetros

   Los parámetros tienen restricciones de tipo como
       Solo tipos primitivos excepto char
       Wrapper de tipos primitivos
       Cualquier calse con un constructor que solo reciba un
        String
       Cualquier clase que tenga un metodo statico
        valueOf(String)
       List, Set, SortedSet donde los tipos contenidos
        cumplan con las validaciones anteriores
   En caso de no cumplir con las restricciones el
    servidor respondera BadRequest
                                               31/10/10
Respuestas de Webservice REST

   Los métodos web service REST pueden generar
    varios tipos de respuesta, cualquier tipo MIME
   Esta implementaciones se seleccionan de acuerdo
    a los parámetros que acepte el cliente, así si el
    servidor envía respuestas XML o PLAIN el cliente
    puede seleccionar cualquiera de las dos en sus
    llamadas al método.




                                        31/10/10
URL

   La url de un webservice REST se generan a partir
    de sus parámetros @Path o la concatenación de
    ellos




                                         31/10/10
REST soporta tipos Wrapper

   Las respuestas de los web services REST se
    representan en texto plano o algún formato de texto
    plano así que no se puede manejar de una manera
    tan transparente como los webservice SOAP
   Gracias a la JAXB (Java Architecture for XML
    Binding). podemos utilizar tipos complejos como
    clases java para el paso de datos entre los clientes
    y los WebServices, pero esto no es automático
    como en los WebServices SOAP




                                          31/10/10
Clientes REST

   Los clientes REST no son autogenerados, por lo
    tanto podemos hacer uso de la librería jersey Client
   Si no se desea utilizar este enfoque, se debera
    codificar a mano por medio de los objetos Java
    httpRequest y httpResponse




                                         31/10/10
Jersey Client

import com.sun.jersey.api.client.Client;
Client client = Client.create();
WebResource webResource =
 client.resource("http://example.com/base");




                                           31/10/10
Jersey client y GET

String s = webResource.get(String.class);


MultivaluedMap queryParams = new
 MultivaluedMapImpl(); queryParams.add("param1",
 "val1"); queryParams.add("param2", "val2");
String s =
 webResource.queryParams(queryParams).get(Strin
 g.class);



                                       31/10/10
Enviando datos encapsulados

ClientResponse response =
  webResource.accept("text/plain").get(ClientRespon
  se.class);
int status = response.getStatus();
String textEntity = response.getEntity(String.class);




                                        31/10/10
Jersey Clien y Put

ClientResponse response =
  webResource.type("text/plain").put(ClientResponse.
  class, "foo:bar");
MultivaluedMap queryParams = new
 MultivaluedMapImpl(); queryParams.add("param1",
 "val1"); queryParams.add("param2", "val2");
 ClientResponse response =
 webResource.queryParams(queryParams).put(Clie
 ntResponse.class, "foo:bar");




                                      31/10/10
WebServices y su entorno

   Los diferentes infraestructuras para las
    aplicaciones java hacen que la implementacion de
    los webservices ya sean SOAP o REST cambien
    en su desarrollo
       En servidores full JEE la configuracion es minima
        sobre el entorno, asi que es implementar y desplegar,
        pero su uso de memoria es mayor
       En servidores mas pequeños (servlet o jsp containers)
        su uso de memoria es menor, pero es necesario
        configuraciones especificas para el correcto
        funcionamiento del proveedor de webservices.


                                              31/10/10
Web.xml




          31/10/10

Más contenido relacionado

La actualidad más candente (20)

PPT
Curso Java Avanzado 3 Js Ps
Emilio Aviles Avila
 
PPTX
REST, JERSEY & SOAP
ea2014G3
 
PPT
Servlets y jsp
dtbadboy0
 
PPT
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Emilio Aviles Avila
 
PDF
Servicios web Extendido_error perl
Octavio Izucar Martinez
 
PDF
2. Java Servlets (J2EE) - Curso 2005-2006
Samuel Marrero
 
PDF
Jsp servlet- Tutorial BD Conexión
Pattzy Montero
 
PPTX
Arquitectura REST
Héctor Fuente Pérez
 
DOCX
Arquitectura Rest
Israel Rey
 
PPTX
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
Paradigma Digital
 
PDF
Servicios web
Laura Cortes
 
PPT
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
juliocasal
 
PPT
Curso Java Avanzado 5 Ejb
Emilio Aviles Avila
 
PDF
Integración de aplicaciones Java
Iker Canarias
 
PPTX
Introducción a REST - SymfonyVLC
Miguel Ángel Sánchez Chordi
 
ODP
Curso Jsp
Luis Cerra
 
PDF
Servicios Web Rest con Spring MVC
Vortexbird
 
PPTX
Java Web - JSP
Luis Miguel De Bello
 
PDF
Persistencia de datos en Java
Iker Canarias
 
Curso Java Avanzado 3 Js Ps
Emilio Aviles Avila
 
REST, JERSEY & SOAP
ea2014G3
 
Servlets y jsp
dtbadboy0
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Emilio Aviles Avila
 
Servicios web Extendido_error perl
Octavio Izucar Martinez
 
2. Java Servlets (J2EE) - Curso 2005-2006
Samuel Marrero
 
Jsp servlet- Tutorial BD Conexión
Pattzy Montero
 
Arquitectura REST
Héctor Fuente Pérez
 
Arquitectura Rest
Israel Rey
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
Paradigma Digital
 
Servicios web
Laura Cortes
 
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
juliocasal
 
Curso Java Avanzado 5 Ejb
Emilio Aviles Avila
 
Integración de aplicaciones Java
Iker Canarias
 
Introducción a REST - SymfonyVLC
Miguel Ángel Sánchez Chordi
 
Curso Jsp
Luis Cerra
 
Servicios Web Rest con Spring MVC
Vortexbird
 
Java Web - JSP
Luis Miguel De Bello
 
Persistencia de datos en Java
Iker Canarias
 

Destacado (20)

PPT
Modelos de dominio
Juan Pablo Bustos Thames
 
PDF
Modelo del dominio
SCMU AQP
 
PDF
Hibernate - JPA @luce
Javier Gamarra
 
PDF
Guia de estudio OCP Java SE 7 Programmer
Oscar V
 
ODP
Interoperable Web Services with JAX-WS
Carol McDonald
 
PDF
K fold validation
Masrur Ahmed
 
PPTX
Recomendación con Mahout sobre Cassandra
Jose Felix Hernandez Barrio
 
PPTX
Filtros Colaborativos y Sistemas de Recomendación
Gabriel Huecas
 
PDF
Apache Mahout Algorithms
mozgkarakaya
 
PDF
Final Presentation for Pattern Recognition
davidglenEE
 
PPTX
Intro to Mahout -- DC Hadoop
Grant Ingersoll
 
PPT
Unidad 10 Mad Diagrama De Clases
Sergio Sanchez
 
PPTX
Intro to Apache Mahout
Grant Ingersoll
 
PPT
Requerimientos funcionales y no funcionales
Lismirabal
 
PDF
Apache Mahout Tutorial - Recommendation - 2013/2014
Cataldo Musto
 
DOCX
Requerimientos funcionales y no funcionales de la aplicación
Yare LoZada
 
PPTX
DESARROLLO DE PROTOTIPOS
UDEC
 
PDF
Modelos de Base de Datos
Axel Mérida
 
PPTX
Modelo relacional
gerardo_gauna
 
PDF
Técnicas De Identificación De Problemas Y Toma De Decisión
shuler
 
Modelos de dominio
Juan Pablo Bustos Thames
 
Modelo del dominio
SCMU AQP
 
Hibernate - JPA @luce
Javier Gamarra
 
Guia de estudio OCP Java SE 7 Programmer
Oscar V
 
Interoperable Web Services with JAX-WS
Carol McDonald
 
K fold validation
Masrur Ahmed
 
Recomendación con Mahout sobre Cassandra
Jose Felix Hernandez Barrio
 
Filtros Colaborativos y Sistemas de Recomendación
Gabriel Huecas
 
Apache Mahout Algorithms
mozgkarakaya
 
Final Presentation for Pattern Recognition
davidglenEE
 
Intro to Mahout -- DC Hadoop
Grant Ingersoll
 
Unidad 10 Mad Diagrama De Clases
Sergio Sanchez
 
Intro to Apache Mahout
Grant Ingersoll
 
Requerimientos funcionales y no funcionales
Lismirabal
 
Apache Mahout Tutorial - Recommendation - 2013/2014
Cataldo Musto
 
Requerimientos funcionales y no funcionales de la aplicación
Yare LoZada
 
DESARROLLO DE PROTOTIPOS
UDEC
 
Modelos de Base de Datos
Axel Mérida
 
Modelo relacional
gerardo_gauna
 
Técnicas De Identificación De Problemas Y Toma De Decisión
shuler
 
Publicidad

Similar a Java WebServices JaxWS - JaxRs (20)

ODP
Spring Web Services
Carlos Gavidia-Calderon
 
PDF
Servicios web
Alan Flores Gaspar
 
PDF
Cjee a-leccion-web services-jax-ws
andres880106
 
PPT
Webservices
Jose San Martin
 
PPT
Servicios web
Karla Castillo
 
PDF
3/9 soa y web services
Juan Carlos Rubio Pineda
 
DOCX
Servicios web
Joel Balderrama Rosas
 
PPTX
Web services1
ANDRES FELIPE CRUZ ERAZO
 
DOCX
Servicios web
Joel Balderrama Rosas
 
PDF
Servicios Web
Rene Guaman-Quinche
 
PPTX
Servicios web
Victor Mijangos
 
PPT
Servicios Web II.ppt
DiegoRomn20
 
DOCX
Servicios web
Arturo Hernández Martínez
 
PDF
[ES] Construyendo Servicios Web con JDeveloper
Eudris Cabrera
 
PDF
Formación WS
Angel Borroy López
 
PPTX
Java Web Services - Introduccion
Luis Miguel De Bello
 
PDF
23444719 monografia-de-web-services
casper088
 
PPTX
9-Unidad 3: Diseños de Vista-3.1 Creación Web Services
Luis Fernando Aguas Bucheli
 
PDF
Web services
jam c
 
Spring Web Services
Carlos Gavidia-Calderon
 
Servicios web
Alan Flores Gaspar
 
Cjee a-leccion-web services-jax-ws
andres880106
 
Webservices
Jose San Martin
 
Servicios web
Karla Castillo
 
3/9 soa y web services
Juan Carlos Rubio Pineda
 
Servicios web
Joel Balderrama Rosas
 
Servicios web
Joel Balderrama Rosas
 
Servicios Web
Rene Guaman-Quinche
 
Servicios web
Victor Mijangos
 
Servicios Web II.ppt
DiegoRomn20
 
[ES] Construyendo Servicios Web con JDeveloper
Eudris Cabrera
 
Formación WS
Angel Borroy López
 
Java Web Services - Introduccion
Luis Miguel De Bello
 
23444719 monografia-de-web-services
casper088
 
9-Unidad 3: Diseños de Vista-3.1 Creación Web Services
Luis Fernando Aguas Bucheli
 
Web services
jam c
 
Publicidad

Último (18)

PPTX
Revolucionando-los-Informes-Tecnicos-con-IA.pptx
DanielChura9
 
PDF
albañileriaalbañileriaalbañileriaalbañileriaalbañileria
danteisrael987654321
 
PDF
S4D430 Col24 Modelado de datos en Dictionary ABAP y ABAP Core Data Services
Libreria ERP
 
PPTX
Los atajos de teclado para toda las VS de Windows
abel230176
 
PPTX
Manejo de Web de demostración modulo IOT.pptx
IsaacFernandoPrezSal1
 
PDF
Índice del libro "Hacking & Pentesting con Inteligencia Artificial" de 0xWord
Chema Alonso
 
PPTX
7°-A-y-B-Matemática-PPT-n°5-05-al-09-de-Octubre.pptx
IsabelCastro985630
 
PDF
AU-Administración Linux Ubuntu Fedora.pdf
Serviciojat
 
PDF
Distribución de frecuencias y Diagrama de Pareto en Excel.pdf
LauraSofaFernndezCsp
 
PDF
EXCEL AVANZADO- METODOS ESTADISTICOS 1.pdf
MICHELLESOFAPOLANIAS
 
PPTX
Presentación_Estación_Total_Temas_Definidos.pptx fin.pptx
ximenamondrianbecerr
 
PPTX
Poblacion_y_Muestra para trabajos de investigación pptx
yaneligomezcaceres
 
PDF
Seguridad y auditorías en Modelos grandes del lenguaje (LLM)
Jose Manuel Ortega Candel
 
PDF
Distribución de frecuencias y Diagrama de Pareto en Excel - Trabajo Colaborat...
mapaulahiguita
 
PDF
CyberOps Associate - Cisco Certification
VICTOR MAESTRE RAMIREZ
 
PPTX
Presentación de servicios XMS (2025) - Partner Microsoft
INBOUND PLUS SpA
 
PDF
Curso.Formacion.dron.A1.A3.Completo.v1.pdf
jimenoasenjo1
 
PPTX
Achiri Huachaca Cristian Luis HISTORIA DE LA MECATRÓNICA AUTOMOTRIZ.pptx
nataliapuma502
 
Revolucionando-los-Informes-Tecnicos-con-IA.pptx
DanielChura9
 
albañileriaalbañileriaalbañileriaalbañileriaalbañileria
danteisrael987654321
 
S4D430 Col24 Modelado de datos en Dictionary ABAP y ABAP Core Data Services
Libreria ERP
 
Los atajos de teclado para toda las VS de Windows
abel230176
 
Manejo de Web de demostración modulo IOT.pptx
IsaacFernandoPrezSal1
 
Índice del libro "Hacking & Pentesting con Inteligencia Artificial" de 0xWord
Chema Alonso
 
7°-A-y-B-Matemática-PPT-n°5-05-al-09-de-Octubre.pptx
IsabelCastro985630
 
AU-Administración Linux Ubuntu Fedora.pdf
Serviciojat
 
Distribución de frecuencias y Diagrama de Pareto en Excel.pdf
LauraSofaFernndezCsp
 
EXCEL AVANZADO- METODOS ESTADISTICOS 1.pdf
MICHELLESOFAPOLANIAS
 
Presentación_Estación_Total_Temas_Definidos.pptx fin.pptx
ximenamondrianbecerr
 
Poblacion_y_Muestra para trabajos de investigación pptx
yaneligomezcaceres
 
Seguridad y auditorías en Modelos grandes del lenguaje (LLM)
Jose Manuel Ortega Candel
 
Distribución de frecuencias y Diagrama de Pareto en Excel - Trabajo Colaborat...
mapaulahiguita
 
CyberOps Associate - Cisco Certification
VICTOR MAESTRE RAMIREZ
 
Presentación de servicios XMS (2025) - Partner Microsoft
INBOUND PLUS SpA
 
Curso.Formacion.dron.A1.A3.Completo.v1.pdf
jimenoasenjo1
 
Achiri Huachaca Cristian Luis HISTORIA DE LA MECATRÓNICA AUTOMOTRIZ.pptx
nataliapuma502
 

Java WebServices JaxWS - JaxRs

  • 1. WebServices con JAX-WS, RS  Haga clic para agregar texto
  • 2. Que es JAX-WS JAX-RS  Son los estándares java para el manejo de web services y web services REST  Existen varias implementaciones del estándar como JAX-WS:  Apache CFX  Glassfish Metro  Apache Axis2  También varias de JAX-RS:  Apache CFX  Jersey  RESTEasy  Restlet
  • 3. Diferencias 31/10/10
  • 4. Estándares WS  Los web services se guían por estándares liberados por OASIS(Organization for the Advancement of Structured Information Standards)  Define servicios como:  WS-Addressing  WS-Coordination  WS-MetadataExchange  WS-Policy  WS-ReliableMessaging  Web Services Security  WS-SercureConversation  WS-SecurityPolicy  WS-Transaction  WS-Trust  WS-Federation
  • 5. Consideraciones  Las implementaciones difieren entre los estadares WS soportados.  No todos los IDEs se integran fácilmente con cada implementación.  No todas las implementaciones son interoperables con otros clientes o servidores.  La compatibilidad con JDK 1.4 no esta asegurada en algunas versiones.
  • 6. Implementando un WebService Existen dos aproximaciones para crear un web service.  Desde el WSDL: este aproximación se basa en el archivo WSDL para generar las clases JAVA necesarias para su implementación, estas clases son un esqueleto con las anotaciones necesarias para implementar el web service.  Desde la Clase JAVA: esta aproximación creamos la clase debidamente anotada junto con la funcionalidad implementada y desde la cual se genera el WSDL para que el web service sea consumido.
  • 7. Creando un web service  Crear un web service con JAX-WS consta de realizar las anotaciones necesarias sobre la clase y sus métodos para publicarlas.  Se debe agregar disponibilidad del archivo wsdl de descripción del archivo.  Con estos dos elementos es posible desplegar el web service en cualquier contenedor servidor JEE o Servlet container.
  • 8. Visión general de un Web service
  • 10. Como funciona  La implementación de JAX-WS incorpora las herramientas necesarias para convertir la clase anotada en su respectivo wsdl y clases asociadas al request y la response. – WSDL to Java, WSDL to JavaScript, Java to JavaScript – Java to WSDL,XSD to WSDL, WSDL to XML, IDL to WSDL – SDL to SOAP, WSDL to CORBA, WSDL to service – WSDL to IDL – WSDL Validation
  • 11. Probando nuestro web service  Eclipse contiene varias herramientas para probar los web services, en este caso se usara Jboss web service tester.
  • 12. Anotaciones disponibles Anotación Descripción @WebService Marca la clase como la implementación de un web service @WebMethod Marca un método de la clase como operación del endpoint @OneWay Marca el método como una operación de una sola vía @WebParam Se usa para marcar los parámetros del método como accesibles @WebResult Mapea el resultado de una operación a un wsdl o xml @HandlerChain Anotación para especificar un manejador externo. Por ejemplo un filtro para autenticar el webservice @SOAPBinding Establece la configuración del encoding del web service. @RequestWrapper Establece la clase la cual contendrá el request durante una petición
  • 13. Anotaciones disponibles Anotación Descripción @ResponseWrapper Encapsula la respuesta de un webmethod en una clase especificada @ServiceMode Establece si la implementacion JAX-WS procesara todo el mensaje o solo los PayLoads(la parte que esta al rededor del mensaje), por ejemplo validar todo el mensaje, o solo la parte SOAP @WebEndpoint Se usa para sobre escribir los metodo getPort @WebFault Establece excepciones para las operaciones @WebServiceClient Establece la configuracion de un cliente para uin servicio web @WebServiceProvider Establece como clase que implementa un archivo wsdl @XmlRootElement Mapea una clase a el root element de un archivo xml @XmlAccessorType Establece si son las atributos o metodos se serualizan por defecrto
  • 14. Anotaciones disponibles Anotación Descripción @XmlType Mapea una clase a los atributos de un archivo xml @XmlElement Mapea un atributo a un valor en un archivo xml @Resource Es una anotación común utilizada para inyectar el webcontext @PostConstruct Es una anotación común que indica un método que debe ejecutarse inmediatamente despues de la inizialicacion @PreDestruct Es una anotación común que indica un método que debe ejecutarse inmediatamente antes de la destruccion
  • 15. Requerimientos para crear un WS  La clase o la interface que implementa deben estar tener sus respectivas anotaciones  Los métodos publicados no deben ser static o final  Lo métodos expuestos como webservices deben ser anotados con @webmethod  Los parámetros deben ser compatibles con las librerías JAXB (Java Architecture for XML Binding). Definir un xml con los datos para construir los objetos en tiempo de ejecución a partir de este xml  La clase implementación, marcada como @webservice no deben ser final o abstract 31/10/10
  • 16. Requerimientos para crear un WS  La implementación debe tener un constructor por defecto sin parámetros  La clase no debe tener implementación del método finalize  Se tienen disponibles los métodos @PreDestroy y @PostConstruct para los eventos de su ciclo de vida 31/10/10
  • 17. Que se debe considerar al desarrollar un web service  Los web services son un buen método de integración, pero son mas dificiles de mantener en un entorno donde proliferan.  Según el servidor de aplicaciones que utilicemos se recomienda utilizar la implementación Jax-WS que mejor se integren por ejemplo JBossAS con JBossWS o GlassFish con Metro  En algunos casos los web services pueden llegar a ser pesados ya que deben serializar y deserializar los datos en XML, validar estas serializaciones y encapsular los datos, no se debe delegar sobre ellos lógica de negocio de uso continuo.
  • 18. Que se debe considerar al desarrollar un web service  Se debe controlar la proliferación de webservices llevando una buena política de gobierno sobre su implementación uso y responsabilidades. Se deben catalogar su uso, ubicaciones y funcionalidad para evitar funcionalidad repetida o funcionalidad oculta. 31/10/10
  • 20. Introducción 31/10/10
  • 21. Introducción 31/10/10
  • 22. Que es un web service restful (Representational State Transfer)  Especificación jsr-311 donde se define una Api para desarrollar web services Restful sobre http  Permite realizar intercambio de información a través de los métodos http (get,put,post,etc..)  Los métodos http se muestran como una manera excelente de interactuar con entidades y sus operaciones CRUD 31/10/10
  • 23. Visión general de servicios REST 31/10/10
  • 24. Anotaciones disponibles Anotación Descripción @Path url donde respondera el webservice @Get Método que responderá a peticiones Get @Post Método que responderá a peticiones Post @Put Método que responderá a peticiones Put @Delete Método que responderá a peticiones Delete @Head Método que responderá a peticiones Head @PathParam Representa un parametro extraido de el request de la url
  • 25. Anotaciones disponibles Anotación Descripción @QueryParam Representa un parametro extraido de el query reuest @Consumes Representa los tipos mimes que recibe el web service @Produces Representa los tipos mimes que envía el web service @Provider Representa configuraciones que representan configuraciones como el proveedor MessageBodyReader o MessageBodyWriter
  • 26. Webservice REST y parámetros 31/10/10
  • 27. Parámetros por PathParam  Los parámetros por PathParam son representados en la url como:  http://localhost/ helloservice /{name}  Los parámetros recibidos se pueden restringir de acuerdo a una expresión regula dada.  @Path(" helloservice /{name: [a-zA-Z][a-zA-Z_0-9]}")  En caso de no cumplir con la expresión regular el servidor responderá con error 404 31/10/10
  • 28. QueryParam  Los parámetros pasados como QueryParam son parámetros representados por la url en formato del método GET http://localhost/ helloservice &param1=valor1?param2=valor2  http://localhost/myservice?usuario=juan&edad=18 @GET @Produces("text/plain") public String sayHello(@DefaultValue(“juan") @QueryParam("name") String name) { return "Hello World! “+name; } 31/10/10
  • 29. Parámetros  Los parámetros tienen restricciones de tipo como  Solo tipos primitivos excepto char  Wrapper de tipos primitivos  Cualquier calse con un constructor que solo reciba un String  Cualquier clase que tenga un metodo statico valueOf(String)  List, Set, SortedSet donde los tipos contenidos cumplan con las validaciones anteriores  En caso de no cumplir con las restricciones el servidor respondera BadRequest 31/10/10
  • 30. Respuestas de Webservice REST  Los métodos web service REST pueden generar varios tipos de respuesta, cualquier tipo MIME  Esta implementaciones se seleccionan de acuerdo a los parámetros que acepte el cliente, así si el servidor envía respuestas XML o PLAIN el cliente puede seleccionar cualquiera de las dos en sus llamadas al método. 31/10/10
  • 31. URL  La url de un webservice REST se generan a partir de sus parámetros @Path o la concatenación de ellos 31/10/10
  • 32. REST soporta tipos Wrapper  Las respuestas de los web services REST se representan en texto plano o algún formato de texto plano así que no se puede manejar de una manera tan transparente como los webservice SOAP  Gracias a la JAXB (Java Architecture for XML Binding). podemos utilizar tipos complejos como clases java para el paso de datos entre los clientes y los WebServices, pero esto no es automático como en los WebServices SOAP 31/10/10
  • 33. Clientes REST  Los clientes REST no son autogenerados, por lo tanto podemos hacer uso de la librería jersey Client  Si no se desea utilizar este enfoque, se debera codificar a mano por medio de los objetos Java httpRequest y httpResponse 31/10/10
  • 34. Jersey Client import com.sun.jersey.api.client.Client; Client client = Client.create(); WebResource webResource = client.resource("http://example.com/base"); 31/10/10
  • 35. Jersey client y GET String s = webResource.get(String.class); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("param1", "val1"); queryParams.add("param2", "val2"); String s = webResource.queryParams(queryParams).get(Strin g.class); 31/10/10
  • 36. Enviando datos encapsulados ClientResponse response = webResource.accept("text/plain").get(ClientRespon se.class); int status = response.getStatus(); String textEntity = response.getEntity(String.class); 31/10/10
  • 37. Jersey Clien y Put ClientResponse response = webResource.type("text/plain").put(ClientResponse. class, "foo:bar"); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("param1", "val1"); queryParams.add("param2", "val2"); ClientResponse response = webResource.queryParams(queryParams).put(Clie ntResponse.class, "foo:bar"); 31/10/10
  • 38. WebServices y su entorno  Los diferentes infraestructuras para las aplicaciones java hacen que la implementacion de los webservices ya sean SOAP o REST cambien en su desarrollo  En servidores full JEE la configuracion es minima sobre el entorno, asi que es implementar y desplegar, pero su uso de memoria es mayor  En servidores mas pequeños (servlet o jsp containers) su uso de memoria es menor, pero es necesario configuraciones especificas para el correcto funcionamiento del proveedor de webservices. 31/10/10
  • 39. Web.xml 31/10/10