[Axis2] Client makes multiple calls to retrieve WSDL file

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[Axis2] Client makes multiple calls to retrieve WSDL file

Patrick Early

Hello,

 

We are having an issue with Axis2 where for every SOAP call we make, the client also makes a call to retrieve the WSDL file prior to making the actual call.  Is there a way to tell the client to use a local file or in-memory string for its WSDL instead of retrieving it from the server?  The app in question is communicating with a Magento eCommerce server via its SOAP API, and the WSDL file is 390K, which is killing performance.  The web server log shows the following, where the GET request is for the WSDL and the POST request is the actual SOAP call.

 

127.0.0.1 - - [26/Mar/2014:16:25:00 -0400] "GET /index.php/api/v2_soap/index/?wsdl=1 HTTP/1.1" 200 326089

127.0.0.1 - - [26/Mar/2014:16:25:00 -0400] "POST /index.php/api/v2_soap/index/ HTTP/1.1" 200 291

 

Any help is greatly appreciated!

 

Regards,

 

- patrick early

Reply | Threaded
Open this post in threaded view
|

Re: [Axis2] Client makes multiple calls to retrieve WSDL file

Shameera Rathnayaka
Hi Patrick,

If it is a concrete contract i don't see any need of retrieve wsld every time when your client send request. You can download wsdl for any service deployed in axis2 by using ?wsdl suffix eg: http://localhost:8080/axis2/services/Version?wsdl this will download wsdl of Version then you can give this to your client. Hope this will help you.

Thanks,
Shameera.


On Thu, Mar 27, 2014 at 1:57 AM, Patrick Early <[hidden email]> wrote:

Hello,

 

We are having an issue with Axis2 where for every SOAP call we make, the client also makes a call to retrieve the WSDL file prior to making the actual call.  Is there a way to tell the client to use a local file or in-memory string for its WSDL instead of retrieving it from the server?  The app in question is communicating with a Magento eCommerce server via its SOAP API, and the WSDL file is 390K, which is killing performance.  The web server log shows the following, where the GET request is for the WSDL and the POST request is the actual SOAP call.

 

127.0.0.1 - - [26/Mar/2014:16:25:00 -0400] "GET /index.php/api/v2_soap/index/?wsdl=1 HTTP/1.1" 200 326089

127.0.0.1 - - [26/Mar/2014:16:25:00 -0400] "POST /index.php/api/v2_soap/index/ HTTP/1.1" 200 291

 

Any help is greatly appreciated!

 

Regards,

 

- patrick early




--
Best Regards,
Shameera Rathnayaka.

email: shameera AT apache.org , shameerainfo AT gmail.com
Blog : http://shameerarathnayaka.blogspot.com/
Reply | Threaded
Open this post in threaded view
|

RE: [Axis2] Client makes multiple calls to retrieve WSDL file

Patrick Early
In reply to this post by Patrick Early

Hi Shameera,

 

Thanks for the response.  I finally found a solution – the probably was not actually Axis2.  The Magento server was making a localhost call for its WSDL – not Axis.  Wireshark provided this out.

 

The other thing I noticed is Axis2 tries to do a POST of the SOAP call without the specified basic authentication and then it tries again with basic authentication.  We removed authentication from the SOAP endpoint, and everything is fine now.

 

Regards,

 

- patrick

 

 

From: Shameera Rathnayaka [[hidden email]]
Sent: Saturday, March 29, 2014 3:33 AM
To: [hidden email]
Subject: Re: [Axis2] Client makes multiple calls to retrieve WSDL file

 

Hi Patrick,

If it is a concrete contract i don't see any need of retrieve wsld every time when your client send request. You can download wsdl for any service deployed in axis2 by using ?wsdl suffix eg: http://localhost:8080/axis2/services/Version?wsdl this will download wsdl of Version then you can give this to your client. Hope this will help you.

Thanks,

Shameera.

 

On Thu, Mar 27, 2014 at 1:57 AM, Patrick Early <[hidden email]> wrote:

Hello,

 

We are having an issue with Axis2 where for every SOAP call we make, the client also makes a call to retrieve the WSDL file prior to making the actual call.  Is there a way to tell the client to use a local file or in-memory string for its WSDL instead of retrieving it from the server?  The app in question is communicating with a Magento eCommerce server via its SOAP API, and the WSDL file is 390K, which is killing performance.  The web server log shows the following, where the GET request is for the WSDL and the POST request is the actual SOAP call.

 

127.0.0.1 - - [26/Mar/2014:16:25:00 -0400] "GET /index.php/api/v2_soap/index/?wsdl=1 HTTP/1.1" 200 326089

127.0.0.1 - - [26/Mar/2014:16:25:00 -0400] "POST /index.php/api/v2_soap/index/ HTTP/1.1" 200 291

 

Any help is greatly appreciated!

 

Regards,

 

- patrick early




--

Best Regards,

Shameera Rathnayaka.

 

email: shameera AT apache.org , shameerainfo AT gmail.com
Blog :
http://shameerarathnayaka.blogspot.com/