2012-09-24 58 views
2

這應該是一個常見的情況,並且很容易適合你們中的許多人。Jboss類衝突

我有appA。此應用程序使用框架fw1和fw2。

FW1使用Logger.java從這裏罐子

http://anonsvn.jboss.org/repos/common/common-logging-spi/trunk/src/main/java/org/jboss/logging/

FW2使用Logger.java從這裏罐子

http://anonsvn.jboss.org/repos/common/jboss-logging/trunk/src/main/java/org/jboss/logging/

請注意Logger.java不可互換(即有不同的方法)。每個框架都需要使用自己選擇的Logger.java。

如何在Jboss中部署這樣的應用程序?這不是我確切的情況,但如果有人能告訴我如何解決這將是很棒的。我可以從那裏拿走它。原因是如果我必須解釋我的情況,它將需要3頁!

在此先感謝

+0

部署在每個應用程序自身的戰爭每個登錄JAR /耳 – Satya

+0

只有一個應用 – OpenSource

+0

哎呀過失,部署在您的應用程序都罐子和在編碼使用完全合格的類名,以避免任何類解決衝突 – Satya

回答

1

我不認爲你的問題有一個通用的解決方案。但我建議你繼續發現如下。

通常你應該使用不同的類加載器運行fw1和fw2。如果你可以攔截這些框架的初始化,你可以這樣做。

其他方法是創建您自己的混合版本Logger。我不知道它有多複雜,但可能這很容易。例如,logger1的方法爲writeLog(),而Logger2的方法爲printLog()。因此,請在與原始包裝相同的包裝中創建您自己的記錄器。該記錄器將使用單獨的類加載器將調用委託給第一個或第二個版本,並將實現這兩​​種方法。

不幸的是,您描述的問題非常普遍,沒有fw1,fw2和logger的具體名稱。如果你自己找不到解決方案,那麼可能會嘗試用更具體的信息提交另一個問題。它可能有幫助。

祝你好運。

0

您正在使用哪個版本的JBoss?

JBoss提供了非常細粒度的類加載能夠通過JBoss部署,structure.xml

處理使用這個,你可以指定FW1使用loggera.java和FW2使用loggerb.java

我不感覺不需要重複,可以在jboss文檔中閱讀關於jboss-deployment-structure.xml。

希望這會有所幫助。

+0

感謝@paolo的更正,真的很感激。問候 –

+0

嗨穆庫爾 - 謝謝。 Jboss的版本是4.2。我會看看你的建議。 – OpenSource

+0

哦4.2。我所說的jboss-deployment-structure.xml存在於jboss中作爲7. 不確定在4.2中是否有相當於它的東西。我猜它的jboss-app.xml(雖然不確定)。 問候 –