Blog!

Busqueda de información

Exposición de un servicio Web basado en SOAP como REST en Oracle Service Bus 12c

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 
En éste artículo hablaremos acerca de cómo exponer un servicio SOAP como REST en Oracle Service Bus 12c (mejor conocido como OSB) con el uso de la herramienta JDeveloper SOA Suite 12c, lo cual puede ser de utilidad sobre todo para los desarrolladores de aplicaciones móviles, dado que muchos desarrolladores e incluso la misma arquitectura de desarrollo hace que sea preferible el uso de REST, en vez de SOAP. A continuación, explico unas pequeñas definiciones que nos ayudaran a entender a SOAP y REST para su uso en servicios Web: SOAP, Simple Object Access Protocol por sus siglas en inglés, es un protocolo basado en XML que proporciona un mecanismo estándar de empaquetar mensajes a servicios Web a través de Internet; éste pertenece a un conjunto de estándares especificados por el consorcio W3C. SOAP comúnmente utiliza el protocolo HTTP para establecer la comunicación, aunque puede utilizar otros protocolos como es SMTP. Por otro lado, REST, que por sus siglas en inglés se entiende como Representational State Transfer, es un estilo de arquitectura basado en un conjunto de principios los cuales describen como los recursos de la red son definidos y analizados. Es importante destacar que, a diferencia de SOAP, no pertenece a un conjunto de estándares ya que solo es un estilo de arquitectura. Por lo tanto, es posible diseñar servicios Web basados en REST, es decir tomando REST como estilo de diseño. Teniendo planteado los conceptos de SOAP y REST, a continuación, se muestran algunas de sus características, ventajas y desventajas: Comparativa De acuerdo a la tabla anterior, podemos observar que el mínimo uso de recursos puede ser un diferenciador para los desarrolladores de aplicaciones móviles al utilizar REST. Pero, si ya tenemos nuestro servicio Web expuesto en nuestro Oracle Service Bus 12c como un servicio web SOAP, ¿Cómo podemos exponer a su vez éste servicio como REST? En este artículo se muestra de manera sencilla como realizar tal faena. Oracle OSB Antes de empezar a hablar sobre a lo que nos compete, un proyecto en OSB se compone básicamente de 3 elementos: • Proxy Service: son las interfaces que los consumidores utilizan para acceder a los servicios administrados por el servidor. • Pipeline: se encarga del flujo de la petición y la respuesta en el bus, lo cual involucra direccionamiento, transformaciones, validaciones, publicaciones y manejo de excepciones durante éste proceso. • Business Service: son las interfaces que conectan con los proveedores de servicios. Es similar a un Proxy Service, excepto que tiene opciones adicionales como manejo de mensajes, manejo de múltiples endpoints, etc. Teniendo estos conceptos en mente, procedemos a hablar sobre cómo exponer el servicio proxy basado en un WSDL, el cual es el que va a utilizar el consumidor del servicio, como servicio REST. Como exponer un Proxy Service como REST en OSB Para realizar la exposición de nuestro servicio en OSB, haremos el uso de la consola para obtener nuestro servicio web. Ésta consola se puede acceder a través de la URL: http://:/servicebus/faces/login Ingreso a consola OSB Ingresamos las credenciales para la consola de OSB y dentro de éste ubicamos el servicio que queremos convertir a REST. En este caso, se convertirá el servicio llamado DescargaExpedienteElectronicoMovil como REST. Consola OSB Primero probaremos que el servicio funcione correctamente. Para ello, a la derecha del elemento servicio de Proxy está ubicado una flecha verde. Le damos clic para probar el servicio: Ingreso a consola OSB Se nos desplegará una ventana para probar el servicio web mediante una petición SOAP, la cual OSB nos dará un esqueleto de la petición. Ingreso a consola OSB Llenaremos esa petición para que nuestro servicio conteste de manera satisfactoria, y le daremos clic al botón que dice ejecutar. El servicio nos contestará si sale todo bien, y podremos ver que nos contestó el servicio en el cuerpo de la respuesta. Ingreso a consola OSB Si la respuesta fue la esperada, exportaremos este servicio para poder realizar el cambio en nuestra herramienta JDeveloper. Para poder exportarlo, le daremos clic al botón que tiene una flecha hacia arriba en la parte superior del explorador de proyectos. Se abrirá una ventana donde seleccionaremos que se desea exportar el contenido por recursos y que se desea incluir las dependencias de los recursos; seleccionaremos los 3 elementos básicos del proyecto, el cual es el servicio de proxy (proxy service), el pipeline y el servicio de negocio (business service). Finalmente, le damos clic a exportar y guardamos el archivo jar. Ingreso a consola OSB Ingreso a consola OSB A continuación, iniciaremos JDeveloper SOA Suite 12c e importaremos el proyecto. Anteriormente, debemos de tener una aplicación para OSB para poder realizar la importación. Seleccionaremos desde el menú File>Import… y seleccionamos la opción Service Bus Resources. Ingreso a consola OSB Ingreso a consola OSB Se mostrará una ventana en donde se nos pedirá los recursos del proyecto de OSB. Seleccionamos la opción Configuration Jar, le damos clic a siguiente y ubicamos el archivo jar que exportamos en la consola de OSB. Le damos clic a siguiente y después en finish. Ingreso a consola OSB Ingreso a consola OSB Ingreso a consola OSB En el explorador de aplicaciones aparecerá nuestro proyecto importado. Abrimos el composite para nuestro proyecto de OSB y ubicamos el pipeline de nuestro proyecto. Ingreso a consola OSB Ingreso a consola OSB Ubicado ya el pipeline de nuestro proyecto de OSB, damos clic derecho sobre él y le damos clic en la opción de Expose As REST. Ingreso a consola OSB Se abrirá un wizard el cual de manera fácil y sencilla nos permitirá asgniarle un nombre al nuevo servicio proxy que se creará para interfaz de REST, configurar las operaciones para dicho servicio, así como la ruta de los recursos al cual podremos acceder. Ingreso a consola OSB Para configurarlo de manera básica, editamos las operaciones a realizar seleccionando la operación process en Operation Bindings y dando clic en el lápiz de la izquierda. Ingreso a consola OSB Aquí podremos observar la ruta de los recursos, el método que se ocupará para la operación REST (la cual puede ser cambiada a GET, POST, PUT y DELETE) y ésta opción dependerá de cómo se enviarán el request. Dependiendo de lo que deseemos, éste wizard nos ayudará mucho. En éste ejemplo, seleccionaremos el método POST en formato JSON, y en la imagen se puede observar que toma el esquema DescargaExpedienteElectronicoMovil.xsd para que el wizard pueda crear el request en JSON a través de éste. Le damos clic a OK para aceptar la edición de la operación y también a la anterior ventana para finalizar el wizard. Ingreso a consola OSB Si el proceso de generación fue exitoso, se habrán creado dos elementos: el archivo WADL y otro proxy service con el nombre que nosotros le asignamos. Ingreso a consola OSB Ingreso a consola OSB Para que todos los recursos generados se queden en el mismo nivel en que lo exportamos, seleccionaremos los dos elementos, daremos clic derecho y seleccionaremos la opción de Refactor>Move. Ingreso a consola OSB En el recuadro, seleccionaremos la carpeta principal donde se encuentran los demás recursos y le daremos OK. Observaremos que los elementos se movieron y están todos juntos. Ingreso a consola OSB Ingreso a consola OSB Ahora tenemos que actualizar este proyecto en nuestro OSB. Para eso, exportaremos el proyecto seleccionando el proyecto, y dando clic en File>Export y seleccionamos la opción de Service Bus Resources. En la ventana seleccionaremos la opción de Configuration Jar, damos siguiente y seleccionamos de nuevo como en OSB que el export sea por recursos(resource), seleccionamos la casilla de incluir dependencias, seleccionamos nuestro proyecto con todos los elementos que teníamos y los que creamos en el proceso, y seleccionamos donde queremos guardar el archivo jar que se generará. Finlamente, le damos Finish. Ingreso a consola OSB Ahora, iremos a la consola donde importamos nuestro proyecto OSB. Primero, crearemos una sesión para poder modificar nuestros archivos. Damos clic a la opción de importar, y seleccionamos el archivo jar que acabamos de exportar desde nuestro JDeveloper. Ingreso a consola OSB Ingreso a consola OSB Ingreso a consola OSB Al dar clic en siguiente,observaremos que nuestro proyecto se va actualizar en algunos elementos que ya teníamos, y otros se nuevos se van a crear. Le damos clic a importar. Ingreso a consola OSB Como podemos observar, se agregaron los dos elementos que creamos en el JDeveloper y se actualizaron los elementos que ya teníamos. Para que los cambios se guarden y se pueda probar el servicio REST, activamos la sesión. Ingreso a consola OSB Ingreso a consola OSB Finalmente, probamos que nuestro servicio de REST se comporte de la manera en la que nuestro servicio SOAP se comportaba. Seleccionamos la flecha verde del servicio proxy que creamos en el JDeveloper y mandamos los mismos parámetros que utilizamos para probar el servicio SOAP. Ingreso a consola OSB Ingreso a consola OSB Como podemos observar, se recibe la misma respuesta para el servicio SOAP que para el REST. Entonces, podremos consumir tanto el servicio SOAP como el REST para acceder a nuestro servicio web. Espero que este artículo les haya sido de utilidad. Para cualquier duda o comentario no duden en escribirme a ccampos[AT]baware.com.mx.

Log in