Search code examples
javascriptweb-servicesaxismirth

Mirth Connect: javascript to call a webservice


I'm trying to call a web service from a Mirth Channel transformer javascript using apache axis library (which it's supposed to be deployed with Mirth). I've tried using the following java script, but it does not work:

/*importPackage(java.net);
importPackage(org.apache.axis.client.Call);
importPackage(org.apache.axis.client.Service);
importPackage(javax.xml.namespace.QName);*/

  var endpoint = 'http://tempuri.org/IService1/';
  var service = org.apache.axis.client.Service();
  var call = service.createCall();
  call.setTargetEndpointAddress( new URL(endpoint) );
  call.setOperationName(new QName('http://soapinterop.org/', 'SayHello'));
  var ret = call.invoke('John Doe');

Any idea?

Thanks.


Solution

  • Answer:

    • Auto-generate service client proxy with Axis WDSL2Jave tool
    • Build a JAR archive with the auto-generated classes
    • Copy the JAR file in %MirthInstallPath%/lib/custom
    • Re-start Mirth service
    • Create a transformer JavaScript with the following code (in this example the WS is called Service1, a sample WS coded with .NET):
    var locator = new Service1Locator();
    var wsdlURL = new URL('http://localhost:8731/Design_Time_Addresses/HelloWorldWS/Service1'));
    var proxy = locator.getBasicHttpBinding_IService1(wsdlURL);
    var result = proxy.sayHello("John Doe");
    // use result to whatever message mapping you need to perform
    

    That's all.