簡體   English   中英

WAR文件中的BlazeDS和Java類

[英]BlazeDS and Java class in WAR file

嗨,我有一個Java類,它已經作為WAR Web應用程序部署在JBOSS上的BlazeDS / Spring服務器中。

除了將訪問WAR文件的Flex應用程序之外,我還需要啟動一些服務器端進程,該進程將通過AMF消息傳遞將BlazeDS“推送”到Flex客戶端。

實施此服務器端過程的最佳方法是什么? -它應該只是在命令行中調用WAR文件中具有main()方法的類嗎? 可以這樣做-不確定您可以從命令行在WAR文件中運行類嗎? -它是否應該是從命令行調用的JAR文件中具有main()方法的類?

不知道這里的標准做法是什么。 關鍵是需要在BlazeDS服務器上啟動該過程以將數據推出(而不是在Flex客戶端上)。

他會給麥克的任何幫助

首先,您是否正在使用最新的Spring / BlazeDS集成? 如果沒有,我強烈建議在這里檢查一下 它可以大大簡化為推送消息傳遞設置消息目的地的過程。 它還允許您使用JMS和Spring Integration消息目標,以及根據需要集成Spring Security。

現在回答您的問題。 您的數據推送服務的生命周期要求是什么? 您是否希望能夠從其他類控制此數據推送的參數(即,啟動和停止它,頻率等)? 使用Spring創建此服務將使您可以根據需要將其注入到其他bean中進行控制。

我目前有一個類似的用例,其中我使用BlazeDS消息目標將遙測數據“推送”到客戶端瀏覽器。 我設置了一個“服務”類,該類由Spring實例化為一個單例實例。

如果不需要此單例的外部控制,則建議您使用帶批注的@PostConstruct或“ init”方法來創建線程,並使用代表您的主循環的匿名Runnable來啟動它。 如果您的服務需要以預定義的頻率推送數據,則可以考慮使用java.util.concurrent.ScheduledExecutorService。

無論哪種方式,您都將需要設置一個帶注釋的@PreDestory或“ destroy”方法,該方法將在銷毀單例實例之前執行。 這將允許您插入代碼,以在Spring容器關閉之前安全地停止循環Thread或ScheduledFuture並清理所有必要的資源。

如果您想與服務進行進一步的交互,則可以使用服務接口從其他類(例如Web控制器等)操縱它。 讓您的類實現此接口,然后使用此接口將您的類注入其他類。 對於更大膽的解決方案,您可以考慮使用dm Server或其他OSGi容器並創建OSGi服務。

如果您需要有關此過程的進一步幫助,或者是否有我可以進一步闡明的具體細節,請告訴我。

馬歇爾你的明星-謝謝!

我正在使用Spring @PostConstruct,並且正在工作。 看來Spring會自動實例化Monitoring類,然后調用@PostConstruct方法。

我還必須在Spring配置文件中包含以下內容才能使其正常工作:

xmlns:context = springframework.org / schema / context springframework.org/schema/context springframework.org/schema/context/spring-context-2.5.xsd

在@PostConstruct方法中,我實現了一個簡單的java.util.Timer,它定期將數據推送到Flex客戶端。 (我仍然需要通過Spring將其設置為單例-有點像Spring新手!)

為了我的目的,ScheduledExecutorService是否可以提供Timer類之外的任何好處?

再次感謝Michael

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM