首頁  >  文章  >  Java  >  部署 weblogic出現問題時要怎麼解決?

部署 weblogic出現問題時要怎麼解決?

零下一度
零下一度原創
2017-07-17 13:33:122552瀏覽

   weblogic 做為商用中間件在(EJB、jndi 資料來源、日誌管理、記憶體管理、資源配置管理...)  是一些開源免費小型容器無法望其項背的。

   weblogic 最早由 weblogic Inc. 開發,後併入 BEA  公司,最後 BEA 公司又併入 Oracle 公司。

   weblogic 是用於開發、整合、部署和管理大型分散式 Web 應用、網路應用和資料庫應用的 Java 應用伺服器。

   因此 weblogic 一般做為專案上線發布和部署的伺服器,而本地研發時大多會選用 Tomcat/Jetty.... 小型容器。

   這樣難免會出現問題,本地運作良好的 web 程序,部署在 weblogic 時會出現這樣或那樣的問題。

   絕大一部分問題都是因為 weblogic 所依賴的 jar 與專案中的 jar 衝突(相同 jar 不同版本)或 weblogic 不支持專案 jar 所導致的。

   當部署weblogic 出現問題時(自己總結三板斧頭):

   1. 確認公司使用的weblogic 版本並翻閱官網對應weblogic版本所支援的標準;

   2. 對照weblogic 出錯日誌確定衝突jar 或確定該webloigc 不支援的jar;

   3.對於出現衝突的jar 在專案WEB-INFO 目錄下新增weblogic.xml 設定文件,其中申明要預先載入的專案jar;

   4. 對於出現該webloigc 版本不支援的jar,升級weblogic 版本,或降低專案使用的jar 版本。

1. 確定weblogic 版本並查看對應支援的標準

   知已知彼才能百戰不殆,因 weblogic 小版本較多且版本之間差異較大。

   查看 weblogic 版本有很多方法,最直接方式是詢問安裝 weblogic 的同事,或是登入 linux 像下面這樣。

   得知部署的版本後,去瞅瞅oracle weblogic 官網,那裡的文檔資料是最全面也是最權威的。

   

   

   找出對應版本點view Library 跳轉進去,在裡面是整個版本的概覽,咱們的關注點應該是該 weblogic 版本支援的標準。

   

   裡面有詳細的該weblogic 支援的java、web Service、一些雜七雜八的標準,例如JDK、EL、 Servlet、JAX-RS、JAX-WS....

2. 對照部署錯誤日誌確定問題並解決

##    有了上述具體的支援標準,配合部署報錯的具體類別和方法,就可以對症下藥。

    以下列舉部署weblogic 時常見的幾個錯誤錯誤例外(還有很多遇到在補充):

    java. lang.UnsupportedClassVersionError:  Unsupported major.minor version 51.0 (weblogic Jdk 版本與專案jdk 版本不一致)

     ##request.getRealPath    request.getRealPath() 為api. jar 本機和weblogic 有差異,使用類別載入 Thread.currentThread().getContextClassLoader() 取得相對路徑)

##    ClassNotFoundException:org.hibernate.hql.ast .HqlToken (weblogic 已依賴較早版本的antlr.jar)

#    解決此類問題的方式大體有三種,遇到部署問題時也可以自己都實踐一下。

###

a. 刪除weblogic 下衝突jar 資料夾:

   (1)刪除/bea/weblogic12.1.3/server/lib/weblogic.jar中的衝突的資料夾;

   (2)copy 衝突的XXX.ja r到/bea/weblogic12.1.3/server/lib, 重啟weblogic。

b.  透過修改啟動腳本來優先載入某些jar

 (1)將衝突的jar 套件拷貝到${DOMAIN_HOME} /lib 目錄下。

  (2)${DOMAIN_HOME}/bin 下找到startWeblogic.sh 檔案用文字編輯器將其打開,並在裡面加入如下內容:

export first_classpath=${DOMAIN_HOME}/lib/xxxx.jar  
SAVE_CLASSPATH="${first_classpath}:${CLASSPATH}"

c. 在應用程式中透過weblogic .xml 的配置,優先載入應用的jar

   因weblogic 版本不用,weblogic 的設定項會有差異,不要盲目從網上copy。

   官網版本說明(其他版本將1213換一下即可):

   注意其中的 prefer-application-resources/prefer-application -packages(預先載入應用對應jar ) 節點的配置:

<?xml version="1.0" encoding="UTF-8"?><weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"><container-descriptor><prefer-web-inf-classes>false</prefer-web-inf-classes><prefer-application-packages><package-name>预先加载项目 lib 中的包名,支持通配符</package-name><package-name>com.sun.faces.*</package-name><package-name>com.bea.faces.*</package-name></prefer-application-packages></container-descriptor></weblogic-web-app>

  解決方案a/b/c 中, c 方案無異是最優解,做為生產環境的weblogic 可能會部署多個應用,不太可能讓你隨便重啟。

  方案 a,b 會破壞 weblogic 的整體性,可能導致其他部署在 weblogic 上的應用程式出現問題。

 

    

#

以上是部署 weblogic出現問題時要怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn