首先,您使用的是最新的Spring/BlazeDS的整合?如果沒有,我強烈建議檢查一下here。它可以大大簡化設置推送消息的消息目的地。它還將允許您使用JMS和Spring Integration消息目標,並且如果您願意,可以集成Spring Security。
現在回答你的問題。您的數據推送服務的生命週期要求是什麼?你是否希望能夠控制其他類的數據推送參數(即開始和停止它,頻率等)?使用Spring創建此服務將允許您將其注入到其他bean中,以便根據需要進行控制。
我目前有一個類似的使用案例,我使用BlazeDS消息目的地將遙測數據「推送」到客戶端瀏覽器。我設置了一個由Spring實例化的「服務」類作爲單例實例。
如果你不需要這個單例的外部控制,那麼我建議你使用一個帶註釋的@PostConstruct或「init」方法來創建一個Thread,並用一個代表你的主循環的匿名Runnable來啓動它。如果您的服務需要以預定義的頻率推送數據,則可以考慮使用java.util.concurrent.ScheduledExecutorService。
無論哪種方式,您還需要設置一個註釋的@PreDestory或「destroy」方法,該方法將在單例實例被銷燬之前執行。這將允許您插入代碼來安全地停止Thread或ScheduledFuture循環,並在Spring容器關閉之前清理所有必需的資源。
如果您想要與您的服務進一步交互,可以使用服務接口從其他類(如Web控制器等)操作它。讓你的類實現這個接口,並使用這個接口將你的類注入到其他類中。對於更大膽的解決方案,您可以考慮使用dm服務器或其他OSGi容器並創建OSGi服務。
請讓我知道如果您需要進一步的幫助關於這個過程,或者如果有具體的細節,我可以進一步闡明。