Ir al contenido principal

Snippets Mongo DB

 Esta publicación servirá para ir colocando fragmentos de consultas que en algún momento me fueron útiles para usarlo en MongoDB Fragmento 1:  Se requería obtener todos los elementos que dentro de un atributo que es de tipo array(arreglo) coincida  con type:"fire"  Fragmento 2: Se requería actualizar el atributo " lastUpdate "  de toda la colección donde la  edad sea mayor o igual a 15.

Consumir WSDL con mule ESB respondiendo JSON o XML




Pues bien esta vez voy a tratar de explicar como consumir  un wsdl del ejemplo que realizamos con WSOperaciones. Por medio de una peticion http consumiremos mediante SOAP el servicio para despues retornar el resultado en formato XML o JSON.Todo esto lo voy a realizar con Mule ESB. Menos bla bla bla y mas Accion...



Crear proyecto desde New-> Mule Project

Colocamos el nombre "ConsumeWSDLOperaciones"
Al crear el proyecto autimaticamente crea un archivo .mflow, justo aqui es donde vamos a crear nuestro flujo para consumir el servicio y hacer la transformacion del resultado
Al finalizar nuestro modelado, esto debera quedar de la siguiente forma, con un flow  y un sub-flow

Bien vamos a comenzar con el sub-flow, ya que este es el que servira para utilizazr el WSDL y consmir el servicio SOAP para hacer la transformacion

Agregamos elScope Sub Flow





Dentro de este le agreamos el componente SOAP y el endpoinr HTTP debe quedar asi:

Damos doble click a SOAP y muestra la siguiente pantalla:
Damos click al boton Generate from WSDL y abre la siguiente pantalla:
Aqui colocamos el WSDL en mi caso yo utilice el local "http://localhost:8036/WSOperaciones/ServidorPort?wsdl", en Package Name colocamos en "com.operaciones.basicas.Servidor" este correponde al nombre del paquete que va a generar el componente, Damos click en OK

Se empieza a Generar el codigo java


Finaliza y se crea algo asi:



Las siguentes imagenes corresponden ala especificacion del wsdl, esto los coloque por que son importantes para entender las siguientes configuraciones ojo:

Imagen XML1:
Imagen XML2:        

 Ya que se  genero el codigo en el mismo componente camos a cambiar en Generic > Operation de JAX-WS service a Jax-WS client

En Client Attributes> Operation: colocaremos "Operaciones" esto por que coresponde al name de las operaciones en el xml del wsdl (Imagen XML2)

En JAX-WS client> Client Class: colocaremos   "com.operaciones.basicas.Servidor.ServidorService"esto por que la clase principal se encuentra en esta ubicacion.

En JAX-WS client> Port: colocamos ServidorPort esto por ser el name del port de la operaciones

Quedaria algo asi:

Damos ok,  se va mirando asi:

Damos doble click en HTTP inbound, muestra la siguiente pantalla:
Borramos todos y solo queda el Display Name y el Method POST, nos dirijimos al tab Advanced y colocamos la url del WSDL queda asi:


Agregamos el Transformer Set Payload

Debe quedar asi:

Este componente servira para enviar las respectivas variables al servicio SOAP. Damos doble click y muestra la pantalla donde colocaremos en Value " " eto debe quedar  asi:



Agregamos una variable







 




Debe verse asi:




 Esta variable srvira para identificar cual fue la peticion por la url si fue una peticion XML o JSON comocamos en Value    debe verse asi:



 Hasta aqui finalizamos la configuracion de sub-flow, ahora toca configurar el el flow, agramos el endpoint HTTP
Damos doble click en el y nos mostrara unapantalla como la siguiente:


En las propiedades del endpoint modificamos los parametros Port y Path, damos aceptar y agreamos un componente Flow Reference se debe ver asi :





Damos doble click al componente Flow Reference y nos muestra una pantalla como esta:


Aqui solo debemos seleccionar en Flow name  el sob-flow que configuramos previamente.Agregamos el componente Choice.





Despues de agregar Choice colocaremos los Transfromadores Object to XML y Object to JSON

 Y debe quedar asi:


Damos doble click en Choice , abrira una pantalla aqui colocaremos las condiciones que ayudaran a retornar el xml o json esto debe quedar algo asi:



Y listo ahora a dar el test  Run As-> Mule Application

y ahora si a probar desde el navegador si escribimos http://localhost:8086/consumiendo?num=10&num2=150&type=xml  esto regresara el resultado en formato XML tal como se ve en la imagen siguiente:


Y si colocamos http://localhost:8086/consumiendo?num=10&num2=150&type=json esto nos retornara el json tal como se ve en la imagen:




Al finalizar todo esto quedo asi:


Como no soy mago ni un genio , dejo las referencias que me ayudaron a crear este ejemplo y claro el proyecto con el codigo fuente:

DESCARA EL PROYECTO Y DEJA UN LIKE :)

http://forum.mulesoft.org/mulesoft/topics/http_inbound_endpoint_message_type
http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+Tips
http://training.middlewareschool.com/mule/consuming-wsdl-first-service/
http://stackoverflow.com/questions/16610614/mule-test-an-http-get-request-with-choice-component

Comentarios

Publicar un comentario

Entradas más populares de este blog

Resetear usuario y contraseña Weblogic

Esta ocasión se me presento un pequeño problema con el acceso a mi weblogic local, podía levantar mi weblogic pero para entrar a la consola no tenia el usuario ni password (Autenticación Denegada Weblogic).Por lo que busque en la red para poder resetear el usuario y password de weblogic.

No se puede llamar Invoke o a BeginInvoke

Que tal banderola pues aca escribiendo sobre un error que me dio al instalar el administrador Microsoft SQL 2008 , pues bien resulta que necesitaba instalar esta tool, y cuando trataba de iniciar el wizard me lanzaba un error que decia algo asi " No se puede llama a Invoke o a BeginInvoke en un control hasta que se halla creado el indentificador de ventana" si no me creen vean la imagen : y entonces me dije a mi mismo, "mi mismo como le voy hacer" entonces pues tube que recurrir a mi salvacion como siemore :D San Google.com, y ya con unas cuantas palabras clave pues que me lanza algunos resultados de los cuales me habia encontrado algo como esto: Problemas al instalar SQL Server 2008 ? Para lo cual no hice caso a este tip pues resulta que yo no tenia instaldo el windows xp, mas bien tenia instalado el windows 7 por que leyendo en los comentarios que se habian hecho llegue a un muy buen tip que decia algo asi: "Para aquellos compañeros que quieren instalar el S