Hi,

I'm having problems starting a big amount of async webservice requests via 
Axis2 client in short time.
The requests are all started from the same Thread and should run parallel in 
only small amount.

As you can see below, I start about 1000 * 5 = 5000 requests, but only a max of 
2-5 are called parallel.
For each dataset, a few information-requests are started parallel, but I ensure 
that each CallbackHandler has been finished,
before requesting the informations for the next dataset.

For the first several hundred requests this works fine, but after some time, my 
network (OS is Windows 2000) goes down,
which means that the complete OS looses the connection to the local network.

I guess this could be based in opening too much TCP connections or something 
like this, 
because if it affects the whole OS and not just my application, it has to be 
something with the network device or driver.

So basically my question is:
Is it ensured that the TCP connection is already closed when 
CallbackHandler.onError or CallbackHandler.onComplete is called?
Or must I do this myself in any way?
Do you have any other clue what might be the problem here?

Thank you!


______________________________________________
A quick mock-overview of how I start the threads:

List<Dataset> datasets;    // approx. 500 - 1000 objects
...
for (Object data: datasets) {
    List<Callback> callbacks;
    for (Information info: myRequestsForThisData) {    // approx. 2-5 objects
        // Generating the Request Document
        Request request = generateRequest(info);
        // Generating a service Callback instance; the Callback class has an 
attribute "finished"
        Callback myCallback = new Callback();
        // remembering the callback
        callbacks.add(myCallback);
        // starting the async request
        stub.startRequest(request,myCallback);
    }

    // now wait until all Callbacks are finished (finished is true if onError 
or onComplete has been called)
    while (true) {
        boolean allCompleted = true;
        for(Callback callback: callbacks)
            if (callback.isFinished()) {
                allCompleted = false;
                break;
            }
        if (allCompleted)
            break;
        Thread.sleep(25);
    }
}

Reply via email to