2014-10-03 50 views
2

我們試圖在我們的JBoss 7.1.1-Final應用服務器中打包和部署GridGain 6作爲自定義靜態模塊。在本地運行時,配置似乎工作,網格作業由本地節點執行,但是當在遠程節點上執行作業時,我們會得到一個ClassNotFoundException,它似乎表明模塊代碼找不到包含在在這個JBoss實例中部署的EAR文件。將GridGain 6作爲自定義模塊部署在JBoss 7.1.1-Final中

Caused by: java.lang.ClassNotFoundException: com.our.company.CustomGridJob from [Module "com.gridgain:main" from local module loader @5e48a0e1 (roots: /path/to/jboss/modules)] 

從它看起來像GridGain模塊試圖取消元帥它從網絡接收的序列化消息,並尋找類構造發起,它發送的工作初始調試。當同一個作業在本地執行時,我們假定序列化/取消編組部分不會發生,因爲沒有網絡可以遍歷,所以本地執行工作。

它正在尋找的類存在於部署到服務器的EAR中,因此它似乎是一個類加載可見性問題。是否有可能讓模塊「知道」部署到容器的代碼?如果是這樣,怎麼樣?

如果這種部署GridGain的方法是不可能的,那麼在EAR的/ lib目錄中,是否有其他方法可以簡單地將GridGain與我們的EAR部署打包在一起? (這會真的膨脹部署)。其他人如何在JBoss 7中部署GridGain 6?

任何意見讚賞。

謝謝。

回答

0

根據JBoss classloading文檔,每個模塊都可以聲明對其他模塊的依賴關係。我不確定靜態模塊是否可以聲明對動態模塊的依賴(如果是,則解決問題)。如果沒有,那麼你可以將GridGain作爲一個單獨的動態模塊來部署,並從GridGain模塊聲明一個依賴到你的EAR模塊。 EAR模塊將不得不聲明對GridGain模塊的依賴(我相信支持循環依賴)。

這樣,所有在EAR模塊中聲明的類都應該對GridGain模塊可見。

讓我知道這是否適合你。

+0

我在jboss-deployment-structure.xml中玩過一段時間,但沒有得到任何工作,所以最終通過將所有GridGain jar放在EAR/lib中解決了這個問題 - 最直接的部署,儘管不是最有效的。當我得到更多時間時,我可能會重新訪問重新打包,這是減少部署應用程序大小的另一種方式。 – Joe 2014-10-09 23:43:29