Hey all:

I wrote in with this problem quite a while back, and a few people tried
to help. The basic problem is that a stub, when making many requests
quickly, will eventually fail with a BindException:

There are a few references to this issue in JIRA:

https://issues.apache.org/jira/browse/AXIS2-2593 (Fixed)
https://issues.apache.org/jira/browse/AXIS2-2441 (Fixed)
https://issues.apache.org/jira/browse/AXIS2-2883 (Open)

This is a fairly common case in our usage of webservices, and
particularly hits hard on Windows, which seems to default to only
allowing ~4000 open sockets at once.

This is very easy to reproduce, all you need is a webservice that
returns quickly (a hello world service works well) and a loop in the
client that calls the service over and over.

I have tried the following code with Axis 1.1.1 (our current production
version) as well as Axis 1.3. This code accesses a service on another
computer, so no sharing of resources should come into play. Perhaps I am
using Axis incorrectly, and would be glad to be corrected if that is the
case. I added a call to Stub.cleanup() inside the loop, but it did not
seem to help.

Thanks for all your help in advance!

-Jake


My sample code:

Service1Stub s = new Service1Stub();
for (int i = 0; i < 5000; i++) {
  Service1Stub.HelloWorldResponse r = null;
  Service1Stub.HelloWorld h = new Service1Stub.HelloWorld();
  r = s.HelloWorld(h);
}

My exception:

Exception in thread "main" org.apache.axis2.AxisFault: Address already
in use: connect
        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
        at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:195)
        at
org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
        at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:327)
        at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:206)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
        at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
        at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
        at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
        at test.Service1Stub.HelloWorld(Service1Stub.java:145)
        at Loop.main(Loop.java:12)
Caused by: java.net.BindException: Address already in use: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at
org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:139)
        at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:124)
        at
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
        at
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
        at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
        at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
        at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
        at
org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:520)
        at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:191)
        ... 9 more


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to