在webservice中运行一个线程

时间:2010-02-26 05:09:52

标签: java web-services multithreading

有人可以帮我解决这个问题,

我创建了简单的webservices并且它有一个队列来保持从客户端发送xml文件,因此每当webservice客户端调用webserbice上的方法时,webserbice将此xml加载到其队列中,现在我想在webserbice上运行一个线程如果队列中的项目采取其他操作,则监视此队列。

但我的问题是,如果客户端调用ws接口中的一个方法,webservice只会调用。所以,但我需要这个线程在webserbice上运行。有人可以告诉我有没有办法做到这一点

1 个答案:

答案 0 :(得分:2)

您必须在Web应用程序中运行Web服务(服务器),这意味着您可能在某处具有web.xml。您可以在其servlet方法上创建initializeinit(开始)处理线程,并在servlet的destroy方法上停止它。请注意,通过使用此模型,如果Web应用程序停止,您可能会丢失未处理的消息。您可能应该查看JMS或类似WebSphere MQ的内容,它们都可以充当消息传递系统 - 您收到消息,将其排入不同的队列,然后当处理应用程序准备就绪时,它拉出下一条消息,处理它,并通知回调进程。