SlideShare una empresa de Scribd logo
1 de 39
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

REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
ea2014G3
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
dtbadboy0
 

La actualidad más candente (20)

Resumen jee
Resumen jeeResumen jee
Resumen jee
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Jsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónJsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD Conexión
 
Arquitectura REST
Arquitectura RESTArquitectura REST
Arquitectura REST
 
Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura Rest
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
 
Servicios web
Servicios webServicios web
Servicios web
 
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con AjaxDesarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Integración de aplicaciones Java
Integración de aplicaciones JavaIntegración de aplicaciones Java
Integración de aplicaciones Java
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVC
 
Java Web - JSP
Java Web - JSPJava Web - JSP
Java Web - JSP
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 

Destacado

Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 Programmer
Oscar V
 
Apache Mahout Algorithms
Apache Mahout AlgorithmsApache Mahout Algorithms
Apache Mahout Algorithms
mozgkarakaya
 
Unidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesUnidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De Clases
Sergio Sanchez
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicación
Yare LoZada
 
DESARROLLO DE PROTOTIPOS
DESARROLLO DE PROTOTIPOSDESARROLLO DE PROTOTIPOS
DESARROLLO DE PROTOTIPOS
UDEC
 
Modelos de Base de Datos
Modelos de Base de DatosModelos de Base de Datos
Modelos de Base de Datos
Axel Mérida
 

Destacado (20)

Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
Modelo del dominio
Modelo del dominioModelo del dominio
Modelo del dominio
 
Hibernate - JPA @luce
Hibernate - JPA @luceHibernate - JPA @luce
Hibernate - JPA @luce
 
Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 Programmer
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WS
 
K fold validation
K fold validationK fold validation
K fold validation
 
Recomendación con Mahout sobre Cassandra
Recomendación con Mahout sobre CassandraRecomendación con Mahout sobre Cassandra
Recomendación con Mahout sobre Cassandra
 
Filtros Colaborativos y Sistemas de Recomendación
Filtros Colaborativos y Sistemas de RecomendaciónFiltros Colaborativos y Sistemas de Recomendación
Filtros Colaborativos y Sistemas de Recomendación
 
Apache Mahout Algorithms
Apache Mahout AlgorithmsApache Mahout Algorithms
Apache Mahout Algorithms
 
Final Presentation for Pattern Recognition
Final Presentation for Pattern RecognitionFinal Presentation for Pattern Recognition
Final Presentation for Pattern Recognition
 
Intro to Mahout -- DC Hadoop
Intro to Mahout -- DC HadoopIntro to Mahout -- DC Hadoop
Intro to Mahout -- DC Hadoop
 
Unidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesUnidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De Clases
 
Intro to Apache Mahout
Intro to Apache MahoutIntro to Apache Mahout
Intro to Apache Mahout
 
Requerimientos funcionales y no funcionales
Requerimientos funcionales y no funcionalesRequerimientos funcionales y no funcionales
Requerimientos funcionales y no funcionales
 
Apache Mahout Tutorial - Recommendation - 2013/2014
Apache Mahout Tutorial - Recommendation - 2013/2014 Apache Mahout Tutorial - Recommendation - 2013/2014
Apache Mahout Tutorial - Recommendation - 2013/2014
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicación
 
DESARROLLO DE PROTOTIPOS
DESARROLLO DE PROTOTIPOSDESARROLLO DE PROTOTIPOS
DESARROLLO DE PROTOTIPOS
 
Modelos de Base de Datos
Modelos de Base de DatosModelos de Base de Datos
Modelos de Base de Datos
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Técnicas De Identificación De Problemas Y Toma De Decisión
Técnicas De Identificación De Problemas Y Toma De DecisiónTécnicas De Identificación De Problemas Y Toma De Decisión
Técnicas De Identificación De Problemas Y Toma De Decisión
 

Similar a Java WebServices JaxWS - JaxRs

Cjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-wsCjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-ws
andres880106
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Oscar V
 
Asp.net conceptos
Asp.net conceptosAsp.net conceptos
Asp.net conceptos
XstremsX
 

Similar a Java WebServices JaxWS - JaxRs (20)

Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx
 
Servicios Web II.ppt
Servicios Web II.pptServicios Web II.ppt
Servicios Web II.ppt
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
Servicios web
Servicios webServicios web
Servicios web
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en Java
 
Servlet
ServletServlet
Servlet
 
Java Web Services - Introduccion
Java Web Services - IntroduccionJava Web Services - Introduccion
Java Web Services - Introduccion
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
Webservices
WebservicesWebservices
Webservices
 
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptxArquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
 
Web Services
Web ServicesWeb Services
Web Services
 
Web Services
Web ServicesWeb Services
Web Services
 
Cjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-wsCjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-ws
 
Servidor web
Servidor webServidor web
Servidor web
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
 
Guía estratégica de migración de WAS a JBoss
Guía estratégica de migración de WAS a JBossGuía estratégica de migración de WAS a JBoss
Guía estratégica de migración de WAS a JBoss
 
Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er dept
 
SEVILLA Meetups29112022_sh.pptx
SEVILLA Meetups29112022_sh.pptxSEVILLA Meetups29112022_sh.pptx
SEVILLA Meetups29112022_sh.pptx
 
Asp.net conceptos
Asp.net conceptosAsp.net conceptos
Asp.net conceptos
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

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