2011-08-25 153 views
15

在我的應用程序中,我使用的是Joda-Time 2.0,但在我的WebLogic路徑中有庫Joda-Time 1.2。如何在WebLogic中設置JAR的順序?

如何更改順序並告訴WebLogic使用我的庫?現在它正在使用它自己的庫,而不是我的庫。我剛剛爲Joda-Time 2.0添加了一個Maven項目依賴項。

回答

26

有幾種方法可以做到這一點。

  1. 在你的域名的bin文件夾更改您的startWebLogic.cmd(SH),尋找類路徑設置和之前的任何其他WebLogic jar添加新喬達
  2. 如上面所說,你可以改變你的weblogic .xml如果應用程序是一個Web應用程序,並且選擇喜歡戰爭中的任何lib。
  3. 如果您使用的企業應用程序,你可以在你的weblogic-application.xml中設置以下選項:

    <prefer-application-packages> 
        <package-name>org.apache.*</package-name> 
        <package-name>antlr.*</package-name> 
    </prefer-application-packages> 
    

,並在那裏爲喬達設置你的包名。

請注意,第一個選項可能會導致WebLogic的奇怪行爲。

請注意,由於某些原因,我無法獲得使用XML的代碼。

+0

THX的另一種解決方案,但第一個是更優雅,它的工作原理,但thx無論如何 – hudi

+1

請注意,它與優雅無關。根據您的項目具體情況,可能需要選項2和3。 JoseK確實爲Web容器工作,但如果您在ejb容器中需要它,它將會失敗。但是,如果它適合你,那麼這是你在尋找的解決方案 –

+0

+1;選項2本身包含其他答案,選項3是我首選的方式,因爲它可以指定在應用程序級別裝入哪些庫。使用prefer-web-inf-classes是一種全有或全無的方法,並且在加載可能在服務器級共享的庫時會導致大量的重複。 – CashIsClay

11

由於你的類存在於你的戰爭,WEB-INF/lib下,

你可以嘗試使用weblogic.xml中設置強制的WEB-INF/lib中的類優先獲得加載到該服務器/ lib與

<container-descriptor>  
<prefer-web-inf-classes>true</prefer-web-inf-classes> 
</container-descriptor> 
+0

不錯,它工作thx很多 – hudi