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.