Spring Web Services

4,262 views

Published on

Presentación utilizada en el Spring Community Day 2010

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,262
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
68
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Spring Web Services

  1. 1. Spring Web Services Carlos G. Gavidia Spring Community Day 2010
  2. 2. Agenda <ul><li>Estilos de desarrollo para servicios Web </li><ul><li>Primero el contrato
  3. 3. El contrato al último </li></ul><li>Servicios Web con Spring y Xfire </li><ul><li>Publicación y consumo </li></ul><li>Contratos en Servicios Web </li><ul><li>Contrato de datos y de servicio, Apache XML Beans </li></ul><li>Servicios Web con Spring-WS </li><ul><li>Publicación y consumo con manipulación XML y XML Marshalling </li></ul></ul>
  4. 4. Estilos de desarrollo <ul>El contrato al último <li>Exponer clases Java como Servicios Web
  5. 5. Generación automática de WSDL
  6. 6. El diseño del servicio se realiza en Java y no en XML/WSDL </li></ul><ul>El contrato primero <li>Se diseñan primero los mensajes de entrada y salida del servicio con XML
  7. 7. Luego se implementa el contrato definido en un lenguaje de programación </li></ul>
  8. 8. Estilos de desarrollo <ul><li>Si definimos el contrato al último, los cambios en clases Java impactan a nuestros clientes
  9. 9. El contrato generado automáticamente no es portable y puede ser ineficiente
  10. 10. Pero, generar el contrato al último es mucho más fácil </li></ul>
  11. 11. Publicar servicios con XFire <ul><li>XFire: Framework SOAP para Java
  12. 12. Recetario: </li><ul><li>Agregar dependencias
  13. 13. Regi strar DispatcherServlet en web.xml
  14. 14. Exportamos el bean de implementación mediante XfireExporter
  15. 15. Verificamos consultando el WSDL del servicio </li></ul></ul>
  16. 16. Consumir servicios con XFire <ul><li>Recetario: </li><ul><li>Agregar dependencias
  17. 17. Creamos un proxy para el servicio web con XfireClientFactoryBean
  18. 18. Invocamos al bean desde el cliente </li></ul></ul>
  19. 19. Publicar un servicio con anotaciones <ul><li>JSR-181: Web Services Metadata for the Java Platform
  20. 20. Recetario </li><ul><li>Agregar las dependencias
  21. 21. Usamos Jsr181HandlerMapping para enlazar las peticiones de servicios web con lo configurado con las anotaciones </li></ul></ul>
  22. 22. Contratos en servicios web <ul>Contrato de datos <li>Describe tipos de datos y mensajes de entrada y salida
  23. 23. Definido mediante XSD
  24. 24. Contrato de servicios
  25. 25. Describe las operaciones del servicio web
  26. 26. Definido mediante WSDL </li></ul>
  27. 27. Archivos XSD con Apache XML Beans <ul><li>Crear mensajes XML de ejemplo
  28. 28. Generar el archivo XSD mediant e inst2xsd </li><ul><li>inst2xsd -design rd -enumerations never request.xml response.xml </li></ul><li>Optimizar el documento generado </li></ul>
  29. 29. Publicar Servicios con Spring-WS
  30. 30. Publicar Servicios con Spring-WS <ul><li>Recetario </li><ul><li>Agregar dependencias
  31. 31. Configurar MessageDispatcherServlet en web.xml
  32. 32. Declarar un bean para la implementación del servicio
  33. 33. PayloadRootQNameEndpointMapping </li><ul><li>Asigna peticiones de servicio web según el elemento raíz del mensaje </li></ul><li>Creamos el endpoint con un API de procesamiento XML </li><ul><li>En nuestro caso dom4j
  34. 34. Extendemos AbstractDom4jPayloadEndpoint
  35. 35. Sobreescribimos invokeInternal () . </li></ul><li>Declaramos el endpoint creado
  36. 36. Publicamos el WSDL con DynamicWsdl11Definition
  37. 37. XsdBasedSoap11Wsdl4jDefinitionBuilder: En base a un XSD </li></ul></ul>
  38. 38. Archivo de Configuración
  39. 39. Consumir servicios con Spring-WS <ul><li>Creación de un proxy local para un servicio remoto </li><ul><li>Debe implementar WeatherService
  40. 40. Debe convertir una invocación de un método local en una llamada al servicio Web
  41. 41. Utilizamos el método sendSourceAndReceiveToResult de WebServiceTemplate
  42. 42. Declaramos el proxy en un archivo de configuración de Spring
  43. 43. Podemos utilizar WebServiceGatewaySupport para obtener una instancia de WebServiceTemplate sin necesidad de inyección </li></ul></ul>
  44. 44. Un Cliente
  45. 45. Servicios Web con Marshalling XML
  46. 46. Publicar Servicios con Marshalling <ul><li>Recetario </li><ul><li>Usaremos Castor, e incluimos sus dependencias
  47. 47. Definir un modelo de objetos de acuerdo al formato XML
  48. 48. Definimos el endpoint extendiendo AbstractMarshallingPayloadEndpoint y sobre escribiendo invokeInternal () .
  49. 49. Configuramos el endpoint, utilizando como marshaller/unmarshaller a CastorMarshaller </li><ul><li>Señalando el archivo de configuración del mapping </li></ul></ul></ul>
  50. 50. Archivo de Mapping de Castor
  51. 51. Consumir servicios con Marshalling <ul><li>Reutilizaremos el modelo de objetos y el archivo de configuración del servicio
  52. 52. WebServiceTemplate provee el mètodo marshalSendAndReceive .
  53. 53. Incluir las dependencias de Castor en el cliente
  54. 54. Configurarar marshaller/unmarshaller para WebServiceTemplate </li></ul>
  55. 55. Resumen <ul><li>Implementar servicios comenzando por el contrato tiene sus ventajas </li><ul><li>Contrato de datos: XSD. Tienes que hacerlo manualmente
  56. 56. Contrato de servicios: WSDL. Puedes generarlo automático </li></ul><li>Las peticiones de servicios web son manejadas por endpoints </li><ul><li>Mediante manipulación XML
  57. 57. Mediante marshalling XML </li></ul></ul>
  58. 58. Créditos Basado en Spring Recipes A Problem-Solution Approach de Gary Mak
  59. 59. Gracias! Mail : cgavidiac@gmail.com Blog :http://certified-es.blogspot.com/ Twitter :@Cptan_Alatriste

×