《LINUX實操:WebLogic 部署問題定位與解決》要點:
本文介紹了LINUX實操:WebLogic 部署問題定位與解決,希望對您有用。如果有疑問,可以聯系我們。
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 版本.
? ?知已知彼才能百戰不殆,因?weblogic 小版本較多且版本之間差異較大.
? ?查看 weblogic 版本有很多辦法,最直接方式是詢問安裝 weblogic 的同事,或者登錄到 linux 像下面這樣.
? ?獲悉部署的版本后,去瞅瞅 oracle weblogic 官網,那里的文檔材料是最全面也是最權威的.
? ?http://www.oracle.com/technetwork/middleware/weblogic/documentation/index.html
? ?
? ?找到對應版本點 view Library 跳轉進去,里面是整個版本的概覽,咱們的關注點應該是該 ?weblogic 版本支持的尺度.
? ?
? ?里面有詳細的該 weblogic 支持的 java、web Service、一些雜七雜八的標準,好比 JDK、EL、Servlet、JAX-RS、JAX-WS....
? ?有了上述具體的支持標準,配合部署報錯的具體類和辦法,就可以對癥下藥.
? ?下面列舉部署 weblogic 時常見的幾個報錯異常(還有很多遇到在彌補):
? ?1) java.lang.UnsupportedClassVersionError: ?Unsupported major.minor version 51.0 (weblogic Jdk 版本與項目 jdk 版本紛歧致)
? ?2)?request.getRealPath() 為 null (?servlet-api.jar 當地和 weblogic 有差異,使用類加載?Thread.currentThread().getContextClassLoader() 獲取相對路徑)
? ?3)?ClassNotFoundException:org.hibernate.hql.ast.HqlToken (weblogic 已依附較早版本的 antlr.jar)
? ?4) 統一設置裝備擺設 tomcat 和 weblogic 上的數據源 jndi :?<jee:jndi-lookup id="dataSource" jndi-name="jdbc/user" />
? ?5)?java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory (移除項目 xml-apis.jar)
? ?6 )weblogic NoClassDefFoundError: Could not initialize class sun.awt.X11Graphi(?改動?startWebLogic.sh export?JAVA_OPTIONS=-Djava.awt.headless=true)
? ?辦理此類問題的方式大體有三種,遇到部署問題時也可以自己都實踐一下.
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換一下即可):http://docs.oracle.com/middleware/1213/wls/WBAPP/weblogic_xml.htm#WBAPP571
? ?關注此中的?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 上的應用呈現問題.
本文永遠更新鏈接地址:
學習更多LINUX教程,請查看站內專欄,如果有LINUX疑問,可以加QQ交流咨詢。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6695.html