2016-10-10 52 views
0

我的目標平臺是WebLogic 12c應用服務器。可以/我應該依賴於WebLogic的捆綁模塊

我有一個ear-project,在啓動時需要例如org.apache.commons.logging.LogFactory

我知道這個類 - 一個相關的類 - 可以在<WL_HOME>/modules/com.bea.core.apache.commons.logging.api_1.1.1.jar中找到,但它在classspath中並不是默認可用的。

在這種情況下 - 我應該怎樣在類路徑中提供<WL_HOME>/modules的jar文件 - 或者我應該提供任何我認爲合適的jar文件 - 要麼捆綁在應用程序中,要麼放在<WL_HOME>/user_projects/domains/<mydomain>/lib

如果我要使用<WL_HOME>/modules文件夾中的那個文件夾 - 如何配置我的域以使其可用?

對我來說,模塊文件夾中的jar文件應該被認爲是合理的提供了依賴關係,但到目前爲止,我一直無法找到正確的方式來啓用它們 - 我一直在瀏覽答案几小時:-)

更新: 我知道我可以簡單地將它們添加到服務器啓動腳本中的CLASSPATH變量 - 我的問題更像 - 我應該嗎?有沒有更好的方法 - 或者我應該完全忘記<WL_HOME>/modules

回答

0

這是一種短視的方法。

  • 您需要重新啓動服務器升級庫
  • 應用程序在服務器上必須是好這些庫在其claspath

的Weblogic有Shared JEE Librariesexample)的概念。簡而言之,您爲MANIFEST.MF添加額外的行並以不同的方式配置該jar,然後您可以使用weblogic-application.xml或其他任何應用程序在其他應用程序中引用它。

問題是您可以在不重新啓動服務器的情況下升級磁帶庫(前提是您提供了一個類似1.1的版本(上次有錯誤,我將它命名爲1.1.1) - 它需要能夠將其轉換爲浮點號碼無縫升級))。

如果你只是想包括一些圖書館,但共享應用程序之外,則只需指定正確的<prefer-application-packages>< prefer-web-inf-classes>元素,這取決於你是否有一個EAR或戰爭。

+0

所以 - 你更喜歡自包含的戰爭或耳朵 - 除了可能需要跨應用程序對齊的依賴關係,還是緊密耦合到servlet容器? –

+0

這是正確的。你應該在Weblogic中自己安裝的庫只有服務器相​​關的東西,比如FIPS加密模塊,AWS SQS驅動或者其他。 許多應用程序常見的東西,但這隻會更新40次(比如斐濟在夏時制日期改變主意時需要更新時區數據庫)。共享庫,只是爲了便於維護。加上你的內部圖書館當然。 –

+0

好的 - 非常感謝:-) –