was和數據庫升級總結


  1. 概述  
    這段時間在做was和oracle的版本升級,由於升級的版本比較新,加上項目年代久遠,遇到一些問題,現總結一下,以備后患。
  2. 升級版本
    軟件名稱 升級前版本 升級后版本
    Websphere Application Server(WAS) was6.1.0.47 was8.5.5.5
    oracle database oracle10g-10.1.0.2.0 oracle12c-12.1.0.2.0

 

 

 

  3.升級思路
   由於要同時升級兩個重要的服務器軟件,為避免出現問題時,最快的定位問題出現的原因,升級時先進行was的升級,數據庫使用原有的數據庫,was升級后確定沒問題了,再進行oracle的升級。

  另外由於項目運行環境was6.1中的jre是1.5版本,而升級后was8.5的jre是1.6版本,因此升級前建議將項目的jdk使用was8.5的jdk進行重新編譯。

  4.升級時遇到的問題和解決方案


     4.1.1

      問題

       Axis2服務端的一些jar包無法加載,導致基於Axis2的Webservice無法啟動

      表現

       系統啟動時出現FileUploadException,NoClassDefFoundError,ClassNotFoundException等

      解決方案

       由於was8中自身集成了Axis2服務,作為webservice的engine,所以如果要使用應用系統自身集成的webservice引擎就需要改變類的加載順序才能順利加載webservice引擎的jar包,具體參考IBM Knowledge Center中的Using a third-party JAX-WS Web services engine一節

       所以打開was控制台,選擇管理模塊,點進去后,將類的加載順序改為父類最后就可以了,這種修改類加載順序(父類最后)的方式已經過實踐驗證,確實可行(實踐環境是基於was8.5.5.5,Axis2-1.6的一個身份認證服務)。

      如果修改完類加載順序問題仍沒解決,需要將axis2自帶的modules下的mar文件改成jar文件放到應用的類路徑下。

         原本以為修改類加載順序后就行了,但是我們系統由於時間久了,用的還是struts1,修改類加載順序后出現jstl標簽庫無法加載的情況,具體表現如下

jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.CookieTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.DefineTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.HeaderTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.IncludeTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.PageTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.ParameterTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.ResourceTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.SizeTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.StrutsTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.IterateTei] from /WEB-INF/struts-logic.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器無法裝入TagExtraInfo類
[org.apache.struts.taglib.IterateTei] from /WEB-INF/struts-logic-el.tld
... 

       后來發現是由於應用的類路徑下有一個com.ibm.ws.webservices.thinclient_6.1.0.jar包跟javaee.jar包沖突,導致標簽庫無法加載。將com.ibm.ws.webservices.thinclient_6.1.0.jar清除,系統恢復正常

    4.1.2
      問題

       數據庫升級成oracle12c時出現連接池獲取不到連接,無法訪問系統

      表現

       只要訪問系統就出現NullPointerExcetpion

      解決方案

        由於數據庫升級后,驅動沒更新,導致連接池初始化連接時失敗,訪問系統時無可用連接就出現NullPointerException。解決方法就出更新數據庫驅動。到oracle12c安裝目錄的jdbc目錄下的lib,將其中的ojdbc6開頭的jar包復制到系統類路徑下。

    

    4.1.3
      問題

       數據庫升級成oracle12c時出現ORA-28040:沒有匹配的認證協議

      表現

       只要訪問系統時設計到數據庫查詢就出現ORA-28040:沒有匹配的認證協議

      解決方案

        這個問題可以用度娘搜到很多,看來碰到的機會還挺高。解決方法就是修改數據庫安裝目錄下的sqlnet.ora($ORACLE_HOME/network/admin/sqlnet.ora)文件,增加SQLNET.ALLOWED_LOGON_VERSION = 8,然后重啟oracle。

 

    希望對希望升級was和數據庫的用戶有所幫助。

  

    

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM