簡體   English   中英

如何在不同的Web應用程序中與EventBus共享事件?

[英]How can I share events with EventBus in different webapps?

我正在使用tomcat。 我想把番石榴罐子和我自己的罐子放在tomcat / lib中。 我的jar有一個工廠來獲取事件總線,所有webapps都可以訪問該工廠。 我不知道如何在webapp1中注冊一個監聽器並從webapp2發布一個事件。 我在webapp2中使用的對象在webapp1中不存在,我只能共享像String,字符串映射等Java對象,但不能共享其他webapp中的對象。

一些想法?

這是一個類加載問題:很可能,webapp1的域類在webapp2中沒有(也不應該)。 相信我,當我說,你不想在webapps之間分享實時對象。

如果要共享數據,請考慮使用正確的JMS(或其他類似的消息傳遞庫),如果要共享行為,請使用REST服務。 只是提一下簡單的常見解決方案。

所有這一切,如果你真的需要去那里,你可以將你想要分享的類放在一個jar中,並將這個和guava放在服務器范圍的類路徑中+特別注意部署過程,因為你創建了一個內存-泄漏。 (不過,每當你使用那種令人討厭的黑客時, 上帝會殺死一只小貓

Guava的EventBus僅適用於單個應用程序中的事件。 它絕對不適用於應用程序或服務器之間的通信(至少不是直接)。 你也絕對不應該依賴於你當前在同一個Tomcat實例中運行這兩個webapp的事實,因為那是你可能想要在某些時候改變的東西。 正如所建議的,更好的解決方案是一個消息庫,用於在JMS等應用程序/服務器之間進行通信。

暫無
暫無

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

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