2013-10-30 69 views
0

我在使用WebSphere ApplicationServer 8的集羣環境中運行JEE6應用程序時遇到問題。 搜索索引用於在UI中進行快速搜索(使用Lucene),必須新數據抵達相應的數據庫層後重新編制索引。爲了實現這一點,我們發送一個JMS消息給應用程序,然後搜索索引將被刷新。 問題是,這些消息只能到達其中一個集羣成員。所以只有那裏的搜索索引是最新的。在其他服務器上,它仍然過時。僅在一臺服務器上接收到JMS消息

我該如何實現搜索索引在所有集羣成員上都得到更新? 我可以在所有服務器上以某種方式收到消息嗎? 還是有更好的方法來做到這一點?

回答

0

我發現了一個可能的解決方案: 通常,通過隊列傳遞的JMS消息只能轉發到其中一個集羣成員。我發現了一種使用EJB計時器獲取信息給所有集羣成員的可能方法。創建非持久性定時器應該在所有集羣成員上調用回調方法。這可能是重新創建所有集羣成員上的本地搜索索引的一種便捷方式。

非持久性ejb計時器非常重要,因爲持久性計時器在集羣上獲得同步並且只在其中一個集羣成員上執行。

+0

此外,非持久性計時器也必須是自動的,而不是程序化的(請參閱IBM文檔:http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm .websphere.nd.doc%2Finfo%2Fae%2Fae%2Ftejb_timerserviceejb_enh.html)。否則,它不會同時在所有集羣成員上運行。 – BJH