P.S - Options 1 and 2 are only for problem solving to locate the source of
the problem, not a final solution.
 

-----Original Message-----
From: Alick Buckley [mailto:[EMAIL PROTECTED]
Sent: Wednesday, 2 April 2008 9:09 AM
To: [email protected]
Subject: RE: WS Performance


Hi,
 
Just to confirm what you are doing.
 
    Machine 1 ( Axis SOAP client ) ---------> TCP/IP HTTP SOAP
-------------> Machine 2 ( SOAP Server )
 

Your example endpont address uses localhost
 

    h ttp://localhost:8080/webservices/EscalierBeton.jws
<http://localhost:8080/webservices/EscalierBeton.jws> 
 
I assume the cross machine test is:
 

    h ttp://machine2:8080/webservices/EscalierBeton.jws
<http://machine2:8080/webservices/EscalierBeton.jws> 

 
1. You could have a slow DNS lookup to resolve the domain name to IP address
 
If you are using Windows on Machine 1 you could add the domain name to the
hosts file for a test
 
Example: C:\WINNT\system32\drivers\etc\hosts
 
 
2. You could write a simple Java program that creates a Socket connect to
the Machine 2 and POSTs a prepared SOAP message. ( This is eliminate the
Axis client )
 
    Socket socket = new Socket ( machine2:8080 )
 

    OutputStream o = socket.getOutputStream
    o.write ( HTTP protocol )
    o.write ( SOAP content )
 

    InputStream input = socket.getInputStream
 
    read input
 
    socket.close ()
 
 
 
 
 
 
 

-----Original Message-----
From: Daniela Claro [mailto:[EMAIL PROTECTED]
Sent: Wednesday, 2 April 2008 12:03 AM
To: [email protected]
Subject: WS Performance


Hi all,
I am using Axis to develop Web services, but until right now I was using
all WS locally. It took about 22milleseconds to execute. Very fast. However
I put them in a LAN, within two machines, and the same Web service took
about 4000 miliseconds to execute. I was astonished! What am I doing wrong?

I put in annexe my Test class in java so you can see what I am actually
doing to run all of them. All four Web services has only one method that
returns OK as a String when it is executed, nothing more than this.

Thus I would like to know what shall I do to make my WS more faster. I am
using axis 1.3.

Thank you so much,
Daniela


public class TestPerformanceExecutionAxisWS{


public static void main(String args[]){
String url[] = new String[4];
url[0] =" http://localhost:8080/webservices/EscalierBeton.jws
<http://localhost:8080/webservices/EscalierBeton.jws> ";
url[1] =" http://localhost:8080/webservices/FournitureBetonENT2.jws
<http://localhost:8080/webservices/FournitureBetonENT2.jws> ";
url[2] =" http://localhost:8080/webservices/FournitureBois.jws
<http://localhost:8080/webservices/FournitureBois.jws> ";
url[3] =" http://localhost:8080/webservices/FournitureFerENT.jws
<http://localhost:8080/webservices/FournitureFerENT.jws> ";

String method     = "executeWS";

int n=0;
long startTime = System.currentTimeMillis();
long averageWS=0;
for (int i = 0; i<400;i++){
  try{

   long startWS = System.currentTimeMillis(); 
   ExecuteWSviaAxis oExecuteWS = new ExecuteWSviaAxis(url[n],method);
   n++;
   if (n==3) n=0;
   String result = oExecuteWS.executeWS();
   long finalWS = System.currentTimeMillis();
   long totalWS = finalWS-startWS;
   averageWS = averageWS+totalWS;

  }catch(Exception e){
   e.printStackTrace();
  }

}
long finalTime = System.currentTimeMillis();
long totalTime = finalTime - startTime;
System.out.println("***************************");
System.out.println("TOTAL TIME:"+totalTime);
System.out.println("AVERAGE TIME:"+averageWS/400);
}
}



/**
*ExecuteWSviaAxis
*/


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;

import javax.xml.rpc.ParameterMode;

public class ExecuteWSviaAxis  {
String endpoint;
String method;

public ExecuteWSviaAxis(String urlService, String method){
this.endpoint = urlService;
this.method = method;
}

   public String executeWS() throws Exception{
    String result="";

    try{
       Service  service = new Service();
       Call     call    = (Call) service.createCall();

       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
       call.setOperationName( method );

       call.setReturnType( XMLType.XSD_STRING );

       System.out.println("***********");
       System.out.println("*********** Starting Web service with AXIS
******************");
       System.out.println("*********** Service endpoint:"+endpoint);
       result = (String) call.invoke(new Object [] {});
       System.out.println("*********** Finishing Web service with AXIS
******************");
    System.out.println("***********");

       System.out.println("ResultadoServiceAxis:" + result); 

      }catch(Exception e){
        System.out.println("ERRO AXIS Method:prepareServiceToExecution
inside MPExecution:");

      }


      return result;

  }
}


Reply via email to