2010-02-28 22 views
1

有人能帮助我在此,如何运行一个Web服务中的一个线程

我已经使用Axis2,Apache和Tomcat创建简单的Web服务。这个Web服务有一个队列,用于保存从客户端发送的xml文件,所以无论客户端何时调用web服务上的方法,web服务都会将此xml加载到其队列中。现在,我想让监控此队列的webservice中运行一个线程,并且队列中是否有项目需要执行某些操作。

但我的问题是,只有客户端调用其接口上的某个方法才会调用webservice。但是我需要这个线程在webserbice上运行。有人能告诉我是否有办法做到这一点?

当客户端调用Web服务上的方法时,它不考虑以前的方法调用。这意味着它不会跟踪队列中的数据,因为每次调用都会创建新的队列。

+0

你的描述不够清楚。 – 2010-02-28 05:56:17

回答

0

听起来像JMS /消息驱动bean的完美用例。 Spring JMS提供这些设施而无需使用全面的J2EE容器,因此tomcat将适合这里。 Active MQ可以提供消息传递引擎。

本质上,您的Web服务会将消息放入队列中,并且消息驱动的bean(或消息驱动的pojo)将从队列和进程读取它们。使用JMS的好处是,如果您在服务器上加载的话,您将能够重新配置消息驱动bean以使其位于单独的主机上。这也意味着您可以轻松迁移到不同的应用服务器,因为JMS是一个标准化的解决方案。

1

如果您需要web应用程序中的后台线程,您必须在web.xml中注册的ContextListener中管理它们。当您的Web应用程序启动并停止时,您会收到通知。

相关问题