Serveis web a Mirth

Leer en castellano

Un servei web (Web Service en anglès) és una col·lecció de protocols i estàndards que serveix per intercanviar dades entre aplicacions. Diferents aplicacions de programari desenvolupades en llenguatges de programació diferents i executades sobre qualsevol plataforma poden utilitzar els serveis web per l’intercanvi de dades en una xarxa com Internet. Aquesta gran interoperatibilitat s’aconsegueix gràcies a l’adopció d’estàndards oberts.

El protocol usat per la transferència de missatges entre serveis web és SOAP, un protocol de comunicació dissenyat per intercanviar missatges en format XML en una xarxa d’ordinadors, normalment sobre el protocol HTTP.

Mirth disposa d’un web service listener ja definit al qual nomes cal definir-li el port,nom del servei i les interfícies que es volen escoltar, aquest web service permet rebre un paràmetre de tipus cadena de caràcters.

D’aquesta manera no es restringeix el contingut ja que al ser una cadena de caràcters no es valida i pot ser qualsevol tipus de dades. Mirth s’encarregarà de rebre el contingut del literal i parsejarlo al tipus  de dada definit en al origen com pot ser un XML.

Encara que aquest servei web per defecte no és gaire restrictiu i es pot usar en molts casos, és possible que sigui necessari modificar una major quantitat d’aspectes del  servei web més enllà dels mencionats anteriorment per això s’ha definit l’opció dels serveis web personalitzats (customs webservices).

Aquests webservices s’han de definir usant una classe Java que sigui subclasse  de AcceptMessage. Mitjançant anotacions es defineixen les seves propietats i mètodes.

Amb l’anotació @Webservice es defineixen els atributs del webservice, els principals són:

  • WsdlLocation: Defineix la ruta on es troba el wsdl que es publicarà.
  • TargetNamespace: Defineix el namespace del WSDL.
  • ServiceName: El nom del servei.
  • Name: El nom del wsdl:portType.
  • PortName: El valor del wsdl:portName.

A més de definir la configuració del webservice s’han de definir els mètodes del webservice. Els mètodes es defineixen com un mètode Java qualsevol però amb la particularitat que és necessari afegir l’anotació @WebMethod per indicar que és un mètode del webservice.

Un cop s’ha definit aquesta classe cal realitzar un arxiu Jar que contingui la classe i situar-lo a la carpeta custom-libs de Mirth. Seguidament és imprescindible fer referència aquesta classe en el listener tal com es pot veure a la següent imatge.

A més és necessari marcar Custom service i introduir el classpath de la classe que defineix el servei a Service Class Name.

Per últim per definir la resposta del servei s’ha d’afegir un objecte de la classe response al response map.

També serà imperatiu fer referencia a aquest element del response map al respond from de l’origen.

Seguint les directrius i instruccions que s’han presentat en aquesta entrada s’ha de poder crear gairebé qualsevol tipus de web service amb Mirth. Aconseguint així una major versatilitat al realitzar integracions que requereixin d’aquesta mena de serveis.

 

Llegir en català 

Un servicio web (Web Service en inglés) es una colección de protocolos y estándares que sirve para intercambiar datos entre aplicaciones. Diferentes aplicaciones de software desarrolladas en lenguajes de programación diferentes y ejecutadas sobre cualquier plataforma pueden utilizar los servicios web para el intercambio de datos en una red como Internet. Esta interoperatibilidad se consigue gracias a la adopción de estándares abiertos.

El protocolo usado para la transferencia de mensajes entre servicios web es SOAP, un protocolo de comunicación diseñado para intercambiar mensajes en formato XML en una red de ordenadores, normalmente sobre el protocolo HTTP.

Mirth dispone de un web service listener ya definido al cual solo hay que definirle el puerto,nombre del servicio y las interfaces que se quieren escuchar, este web service permite recibir un parámetro de tipo cadena de caracteres.

De este modo no se restringe el contenido puesto que al ser una cadena de caracteres no se valida y puede ser cualquier tipo de datos. Mirth se encargará de recibir el contenido del literal y parsearlo al tipo de dato definido en al origen como puede ser un XML.

Aunque este servicio web por defecto no es muy restrictivo y se puede usar en muchos casos, es posible que sea necesario modificar una mayor cantidad de aspectos de el servicio web más allá de los mencionats anteriormente por eso se ha definido la opción de los servicios web personalizados (customs webservices).

Estos servicios web se tienen que definir usando una clase Java que sea subclase de AcceptMessage. Mediante anotaciones se definen sus propiedades y métodos.

Con la anotación @Webservice se definen los atributos del servicio web, los principales son:

  • WsdlLocation: Define la ruta donde se encuentra el Wsdl que se publicará.
  • TargetNamespace: Define el namespace del Wsdl.
  • ServiceName: El nombre del servicio.
  • Name: El nombre del wsdl:portType.
  • PortName: El valor del wsdl:portName.

Además de definir la configuración del webservice se tienen que definir los métodos del webservice. Los métodos se definen como un método Java cualquiera pero con la particularidad que es necesario añadir la anotación @WebMethod para indicar que es un método del servicio.

Una vez se ha definido esta clase hay que realizar un archivo Jar que contenga la clase y situarlo en la carpeta custom-libs de Mirth. Seguidamente es imprescindible hacer referencia a esta clase en el listener tal como se puede ver a la siguiente imagen.

Además es necesario marcar Custom service e introducir el classpath de la clase que define el servicio en Service Class Name.

Por último para definir la respuesta del servicio se debe añadir un objeto de la clase response al response map.

También será imperativo hacer referencia a este elemento del response map en el respond from del origen.

Siguiendo las directrices e instrucciones que se han presentado en esta entrada se debe poder crear casi cualquier tipo de web service con Mirth. Consiguiendo así una mayor versatilidad al realizar integraciones que requieran de este tipo de servicios.

Marc Górriz

Publicat per Marc Górriz

Enginyer Tècnic en Informàtica de Gestió, treballo al CCI-TCM actualment en la línia d’entorns d’interoperabilitat.

Deixa un comentari

L'adreça electrònica no es publicarà Els camps necessaris estan marcats amb *