Martin

You uncomment the NIO transport listener and sender from the default axis2.xml and comment the http/s listener and sender you were using earlier. Then you can configure the ports etc as necessary for the NIO transport.

Alternatively, as Paul commented, you could use the o.a.synapse.transport.* code from synapse-transports-1.1.1.jar on Maven2. This includes more bug fixes and enhancements than the version that ships with Axis2 1.3 release

asankha

[EMAIL PROTECTED] wrote:
I'll ask the dumb question..How do you configure AXIS2 to use the
NIOConnector instead of default HTTP Connector?

Thanks
Martin--
----- Original Message -----
Wrom: MBIPBARHDMNNSKVFVWRKJVZCMHVIBGDADRZFSQHYUCDDJBL
To: <[email protected]>
Sent: Monday, February 11, 2008 12:16 PM
Subject: Re: Async requests killing network


Matthias,

have you tried to create less Callback objects and handle your
"bunch" or requests (at least) with a single one?
Furthermore, Paul pointed out the NIO connector. If you're instead
using the default one, I'd suggest you to customize the configuration
context your service client uses in order to inject a custom
HttpConnectionManager (see the httpclient library) and periodically
call closeIdleConnections().

Michele

On 11 Feb 2008, at 11:11, Matthias Wermund wrote:

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);
    }
}


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




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


Reply via email to