2014-10-21 57 views
0

我有一個war文件,其中包含許多AspectJ方面和一個aop.xml文件,它指定了這些方面適用的包。啓用AOP加載時間加入此行到我的Spring配置通過彈簧編織:如何避免多個AspectJ編織器在使用aop.xml進入和退出war文件時運行

<context:load-time-weaver/> 

這將啓動默認韋弗這對於我的應用程序服務器是:org.springframework.instrument.classloading.weblogic.WebLogicLoadTimeWeaver。

問題是,我們還有另一個方面&關聯的aop.xml文件定義在系統類路徑上,這是由-javaagent:lib/aspectjweaver-1.7.4.jar觸發的,因此會加載另一個織布工。

的2個編織似乎發生衝突,我看到:

[[email protected]] warning define generated class failed -- (LinkageError) loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader): attempted duplicate class definition for name: "x/y/MyClassImpl$AjcClosure1" 
loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader): attempted duplicate class definition for name: "x/y/MyClassImpl$AjcClosure1" 
java.lang.LinkageError: loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader): attempted duplicate class definition for name: "x/y/MyClassImpl$AjcClosure1" 

,如果有一種方法,使戰爭使用由javaagent線定義的aspectjweaver所以我只有1個韋弗運行我不知道?注意我不想將我的方面從戰爭移到系統類路徑,因爲他們對其他庫有很多依賴關係。

任何指導非常感謝!

感謝

回答

0

我不知道是否可以使用特殊屬性的一個配置的AspectJ LTW關閉,以便它沒有生成和備用來代替韋弗相關代理。基本上在推出時設置此係統屬性:

-Daj.weaving.loadersToSkip=org.springframework.instrument.classloading.weblogic.WebLogicLoadTimeWeaver 
+0

非常感謝您的快速響應,但這似乎沒有任何區別。我將嘗試&註釋行,看看這是否有幫助.. – MandyW 2014-10-23 07:32:16

相關問題