2 Replies Latest reply on Mar 24, 2009 1:03 AM by Stephan112

    Consuming a Webservice is extremly slow

    Stephan112
      Hi
      I would like to use a Webservice to communicate with a server. For test purposes I wrote a small java webservice which adds to numbers using the following 2 classes.

      == Class Calculator ==
      package de.theserverside.webservice.service;
      import javax.jws.WebService;
      import javax.jws.soap.SOAPBinding;
      import javax.jws.soap.SOAPBinding.Style;
      @WebService
      @SOAPBinding(style=Style.RPC)
      public class Calculator
      {
      public long addValues(int val1, int val2) {
      return val1 + val2;
      }
      }

      == Class CalculatorServer ==
      package de.theserverside.webservice.service;
      import javax.xml.ws.Endpoint;
      import de.theserverside.webservice.service.Calculator;
      public class CalculatorServer {
      public static void main (String args[]) {
      Calculator server = new Calculator();
      Endpoint endpoint =Endpoint.publish(" http://<IP Adresse>/calculator?wsdl", server);
      }
      }


      In Coldfusion I tested both methods to consume this Webservice:

      <cfinvoke webservice=" http://<IP Adresse>/calculator?wsdl" method="addValues" returnvariable="aString">
      <cfinvokeargument name="arg0" value="1"/>
      <cfinvokeargument name="arg1" value="6"/>
      </cfinvoke>
      <cfoutput>#aString#</cfoutput>

      == mit cfskript ==
      <cfscript>
      ws = createObject("webservice"," http://<IP Adresse>/calculator?wsdl");
      xlatstring = ws.addValues(2,9);
      </cfscript>
      <cfoutput>#xlatstring#</cfoutput>


      The Webservice works with both methods but it takes between 5 and 6 Minutes to get a result.
      I also wrote a java client to test the webservice which returned the result within 1 second.

      Whats the problem here with CF?

      I am using CF 8
        • 1. Consuming a Webservice is extremly slow
          Stephan112 Level 1
          I found a third way to call a webservice using chttp. But now I have the problem that I cant pass paramaters to my method.
          I wrote a simple hello world method without any paramater and it worked within 1 sec.

          When I try to use the addValues method I get this Error:
          ns2:Serverjava.lang.IllegalArgumentException

          here is the CF Code
          <cfsavecontent variable="soap">
          <soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser=" http://service.webservice.theserverside.de/">
          <soapenv:Header/>
          <soapenv:Body>
          <ser:addValues>
          <arg0>6</arg0>
          <arg1>34</arg1>
          </ser:addValues>
          </soapenv:Body>
          </soapenv:Envelope>
          </cfsavecontent>


          <cfhttp url=" http://<IP>/calculator?wsdl" method="post">
          <cfhttpparam type="header" name="content-type" value="text/xml">
          <cfhttpparam type="header" name="SOAPAction" value="">
          <cfhttpparam type="header" name="content-length" value="#len(soap)#">
          <cfhttpparam type="header" name="charset" value="utf-8">
          <cfhttpparam type="xml" name="message" value="#trim(soap)#">
          </cfhttp>

          <!--- Dump out a nice representation of the SOAP response --->
          <cfoutput>#cfhttp.FileContent#</cfoutput>
          <cfdump var="#xmlParse(cfhttp.FileContent)#">
          • 2. Re: Consuming a Webservice is extremly slow
            Stephan112 Level 1
            anyone have an idea how i can pass parameters to a java webservice?