1 - I would use another thread pool. The axis2 thread pool is used to serve requests, not to accomplish other tasks. 2 - The thread is not interrupted, your code is wrong, If you read the documentation of Object.wait() you'll realize that you *must* own the lock on that object before calling wait.
3 - catching Exception is not good, use its subclasses instead.

Michele

On 25 Apr 2008, at 11:07, LIE Jorund wrote:

Hi All.

I am currently working on an multitreaded axis service. From my interface class I invoke a thread that processes the request. The thread is executed in the the thread pool obtained from the Root Context of the service.The thread starts OK, but if it is suspended in a wait() it is immediately interrupted. Do anyone know why this may happen?

I can see that there is a threadKeepAliveTime configurable in the axis2.xml, but the default interval seems to be long enough (180s).
Below are some snippets of code for illustration:

The execution of the thread in the interface class:

CmsThread cmsThread = new CmsThread();
ThreadFactory threadFactory = MessageContext.getCurrentMessageContext().getRootContext ().getThreadPool();
threadFactory.execute(cmsThread);
The run method of the cmsThread class:
public void run() { try{ logger.info ("waiting..."); wait(10000); logger.info ("end"); } catch (Exception e) { logger.info ("interrupted"); } }

Thanks for any input

Jørund Lie


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

Reply via email to