You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Oscar GarcĂa <os...@gmail.com> on 2008/08/08 15:23:08 UTC
org.apache.axis2.AxisFault: HTTP Connection still opened
Hi there,
I developed an Axis2 stub client with mapping ADB from the WSDL file,
running on windows xp platform, to get information to the Web Service
deployed in a Web Server running on Solaris in the Intranet.
After a specific numbers of successful test, the service, throws a 503
error (org.apache.axis2.AxisFault: Connection reset) ,
the Solaris Server administrator tell me 2 things to take a consideration :
1. They have a limit to 20 simultaneous HTTP Request are connect to the
Server (pooling connection or something like that, security reasons I
guess).
2. My Axis2 Http Request remains open at the Server and not close after
the finish the transaction.
When the HTTP connections that still opened reach the "pool" limit the
Server throw the 503 Error.
This is a short view of netstat command, it appears the opened
connections at the Server
$ netstat -an | grep 25020
Server Client
tcp 0 0 10.113.62.248:25020 0.0.0.0:*
LISTEN
tcp 0 0 10.113.62.248:25020 172.24.100.222:4724
ESTABLISHED
tcp 0 0 10.113.62.248:25020 172.24.100.222:2923
ESTABLISHED
tcp 0 0 10.113.62.248:25020 172.24.100.222:2628
ESTABLISHED
tcp 0 0 10.113.62.248:25020 172.24.100.222:2333
ESTABLISHED
tcp 0 0 10.113.62.248:25020 172.24.100.222:2192
ESTABLISHED
tcp 0 0 10.113.62.248:25020 172.24.100.222:4489
ESTABLISHED
I Test the Web Service with other 2 tools to ensure the Web Service is ok ,
the tools are XML Spy and SoapUI.
First I test the web service (more than 40 times) with Altova XML Spy,
with this test I don't get the 503 error, and the connections are closed. I
found that the XML Spy use a single port on every HTTP Request, meanwhile
AXIS2 use diferent ports on every HTTP Request.
Why Axis2 doing this?
Second I test the web service (more than 50 times) with SoapUI tool, with
this test I don't get the 503 error, this tool use a single port on every
HTTP request, but that connection still opened in server, just like my Axis2
client but don't throw the error. why?
With a Sniffer, I check the trace messages between the Axis2 client -
Server, and SoapUI - Server, the only difference between both HTTP Reques
is the parameter in the HTTP Header "Transfer-Encoding" set to "chunked"
in my Axis2 client. I though that may be the server could not understand
the parameter, and any HTTP protocol misunderstood don`t let the client
close the connection, but I modified the Axis2 stub set to Header Option
CHUNKED to False, like this:
_operationClient.getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
Boolean.FALSE);
I'm testing again and the HTTP traces are equal (AXIS2 and SoapUI ) lilke
this:
POST /soap/QUOService HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "urn:#NewOperation"
User-Agent: Axis2
Host: 10.113.62.248:25020
Content-Length: 736
but with my client the connections still opened.
With the XML Spy another 2 parameters is added "Connection: Keep-Alive" and
"Cache-Control: no-cache" in comparision with my Axis2 client.
I don't have more idea that this behavior could be.
I guess that AXIS2 manage automatically (open and close) the HTTP transport
no?
Is this a known bug in Axis2? or is there any way, where we could close
connections completely from Axis2?
Please let me know, how it can be fixed?
Thanks in advance
sorry about my gramma.