我正在使用tomcat。我想把番石榴罐子和我自己的罐子放在tomcat/lib中。我的jar有一個工廠來獲取事件總線,所有webapps都可以訪問該工廠。我不知道如何在webapp1中註冊偵聽器並從webapp2發佈事件。我在webapp2中使用的對象在webapp1中不存在,我只能共享像String,Map等字符串的對象,但不能從其他webapp的對象中分享。如何在不同的webapps中使用EventBus共享事件?
有些想法?
我正在使用tomcat。我想把番石榴罐子和我自己的罐子放在tomcat/lib中。我的jar有一個工廠來獲取事件總線,所有webapps都可以訪問該工廠。我不知道如何在webapp1中註冊偵聽器並從webapp2發佈事件。我在webapp2中使用的對象在webapp1中不存在,我只能共享像String,Map等字符串的對象,但不能從其他webapp的對象中分享。如何在不同的webapps中使用EventBus共享事件?
有些想法?
這是一個類加載問題:很可能,webapp1的域類不是(也不應該)在webapp2中有效。相信我,當我說,你不想在webapps之間分享活物。
如果要共享數據,請考慮使用適當的JMS(或其他類似的消息傳遞庫),如果要共享行爲,請使用REST服務。只是提到簡單的常見解決方案。
所有的說法,如果你真的需要去那裏,你可以把你想要共享的類放在一個jar中,並將這個和番石榴放在服務器範圍的classpath中+特別注意部署過程,因爲你創建了一個內存泄漏。 (但是,每次你使用那種討厭的黑客時,上帝殺死小貓)
番石榴的EventBus
僅適用於單個應用程序中的事件。這絕對不適用於應用程序或服務器之間的通信(至少不是直接)。你也絕對不應該依賴於你正在同一個Tomcat實例中運行這兩個webapp的事實,因爲這是你可能想要在某個時候改變的東西。正如所建議的,更好的解決方案是一個消息庫,旨在用於應用程序/服務器(如JMS)之間的通信。