簡體   English   中英

Spring Framework沒有在JBoss上看到cglib

[英]Spring Framework doesn't see cglib on JBoss

我的應用程序在JBoss 5.1.0.GA上使用Spring Framework 3.0.5。 框架由服務器提供,即框架庫放在server/<servername>/lib目錄中。 服務器由第三方管理,因此我無法將任何庫添加到此服務器提供的環境中。 在我的應用程序中有必要使用cglib。 Spring將其用於代理目的。 cglib不在server/<servername>/lib ,因此我將cglib-2.2.2.jar包含在我的應用程序.war和maven中。

問題是部署時出現以下錯誤:

無法代理目標類,因為CGLIB2不可用。 將CGLIB添加到類路徑或指定代理接口。

我已經檢查了我的應用程序.war for cglib並在WEB-INF/lib目錄中找到它。 AFAIK位於此目錄中的jar中的所有類都在類路徑中,以及在server/<servername>/lib中的jar中的類。 為什么Spring找不到cglib?

出於這個問題的目的,JBoss類加載器層次結構只能看起來“向下”,即系統類加載器加載的類無法看到應用程序的lib目錄中的類。 因此,服務器的lib目錄中的Spring庫無法在應用程序的lib目錄中看到cglib。

可能的解決方案,按優先順序排列:

  1. 從服務器的lib目錄中刪除Spring JAR。 他們不應該在那里,這只是一個壞主意。 但是你說你不能這樣做。
  2. 將cglib添加到服務器的lib目錄中。 由於與上述相同的原因,不是一種選擇。
  3. 將Spring JAR的重復項添加到應用程序的lib目錄中。 確保它們與服務器完全相同,否則您可能會遇到奇怪的類版本沖突。 這應該允許解析cglib。

選項3遠非理想,因為在類加載器之間復制類是類加載器問題的一個方法,但它可能是您唯一的選擇。

暫無
暫無

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

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