Hi Guenter,

Thanks for the reply. Our problem here is that we don't control the services (this system integrates whatever it finds, that's the point) and that when I call call.invoke(...) it blocks until there's a response.

What I'd ideally need is something that allowed me to specify a callback of some kind to call.invoke and have the initial method call return immediately. This would then have to be combined with some agent that received _all_ soap messages (otherwise you just have another thread listening per service and it defeats the point) and invoked the callback when a message arrived that was in some way correlated to the initial request.

I have a suspicion I'm moving into 'write your own soap toolkit' territory again...

Tom

Grossberger, Guenter wrote:
Hi, Tom!

First I don't know if something like that is covered in Axis 2.

But I guess the Half-Sync/Half-Async pattern or an other event-handling
or concurrency pattern described in the POSA2 book (Pattern-Oriented
Software Architecture: Patterns for Concurrent and Networked Objects
Vol. 2, http://www.cs.wustl.edu/~schmidt/POSA/) would work for you.

Bye,
Guenter



-----Original Message-----
From: Tom Oinn [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 08, 2005 2:19 PM
To: [email protected]
Subject: Minimising thread usage across multiple axis calls

Hi all,

Consider this problem - we have a set of services outside of our control (a mixture of doc/lit and rpc, that's not important though) which are being orchestrated into a dataflow style workflow. At present we must allocate one thread to each service invocation and this is potentially a problem for cases where either a single workflow launches thousands of services concurrently or where the workflow service itself is hosting a large number of active workflows.

In principle it would seem possible to have a thread which was aware of all currently pending SOAP operations (where the request message had been sent but no response received) and which could poll some incoming queue regularly, launching any neccessary threads if messages are present.

This implies a client manager component, I'm not aware of anything analogous to this in the current architecture though?

Questions :

1) Is this covered in the Axis2 design in any way?

2) Is anyone else interested?

Cheers,

Tom




Reply via email to