2010-02-28 79 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應用程序啓動並停止時,您會收到通知。

相關問題