axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniela Claro" <dcl...@dcc.ufba.br>
Subject Re: WS Performance
Date Wed, 02 Apr 2008 15:02:13 GMT
Hi Alick,
 First of all, thank you ! Clarifying some points:
1. I am using directly the IP address in order to not have problems with
DNS, such as:
  url[0] ="http://192.168.1.161:8080/webservices/EscalierBeton.jws";
  url[1] ="http://192.168.1.161:8080/webservices/FournitureBetonENT2.jws";
  url[2] ="http://192.168.1.161:8080/webservices/FournitureBois.jws";
  url[3] ="http://192.168.1.161:8080/webservices/FournitureFerENT.jws";

2. I tried using
    java.net.URL site = new URL(url[n]);
    URLConnection siteCon = site.openConnection();

instead of using Sockets,  I retrieved the content of the page, and
everything works fine.

BufferedReader in = new BufferedReader(new
InputStreamReader(siteCon.getInputStream()));
    String inputLine;

    while((inputLine = in.readLine())!= null)
     System.out.println(inputLine);

    in.close();

I think that the problem in when executing SOAP request within AXIS.

How can I test SOAP connections without using AXIS, only to test the network
latency?

Thank you again.




2008/4/1, Alick Buckley <Alick.Buckley@lansa.com.au>:
>
>  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
>
>      http://localhost:8080/webservices/EscalierBeton.jws<http://localhost:8080/webservices/EscalierBeton.jws>
>
> I assume the cross machine test is:
>
>      http://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:danielabarreiroclaro@gmail.com]
> *Sent:* Wednesday, 2 April 2008 12:03 AM
> *To:* axis-user@ws.apache.org
> *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";
> url[1] ="http://localhost:8080/webservices/FournitureBetonENT2.jws";
> url[2] ="http://localhost:8080/webservices/FournitureBois.jws";
> url[3] ="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;
>
>   }
> }
>
>


-- 
--
ProfÂȘ DrÂȘ Daniela Barreiro Claro
Pesquisadora no LASID/DCC/UFBA
Salvador - Bahia - Brasil

Mime
View raw message