最全weblogic升級與遷移改造常見問題

jaymarco發表於2020-11-06

一、背景介紹

weblogic升級與遷移改造常見是本人參考X86遷移專案中碰到的一系列問題,本次主要介紹weblogic9升級遷移到weblogic11g版本,遷移過程中涉及weblogic跨作業系統遷移、跨大版本升級遷移和應用版本改造等問題,並對這些問題整理出了相應處理解決方法,供大家在做相關weblogic升級遷移專案作為借鑑與參考。

二、遷移問題

2.1 作業系統改造

1、不支援作業系統

2、openfile太多處理

問題

開啟太多檔案問題

異常

典型錯誤如:java.net.Socke tException: Too many open files

解決方法

/etc/security/limits.conf

在最後增加:

root   soft nofile 65535

root   hard nofile 65535

root   soft nproc 16384

root hard nproc 16384

3、大記憶體分配

問題

如果需要超過2g的記憶體

異常

典型錯誤如:out of memory exception

解決方法

建議安裝64bit jdk

4、主機名未配置到hosts檔案

問題

Server啟動失敗

異常

典型錯誤如:WebLogic Managed Server Cannot Communicate With Admin Server   Because of Wrong IP Address Used

解決方法

在hosts檔案配置ip主機名

5、與db之間白名單問題

問題

新建連線池失敗

異常

典型錯誤如:<Jan 7, 2014 12:09:10 PM GMT+08:00> <Error>   <Console> <BEA-240003> <Console encountered the following   error java.sql.SQLException: Io exception: Got minus one from a read call

解決方法

在db監聽中加入監聽ip即可解決

6、主機埠開啟

問題

主機埠未開啟問題

異常

典型錯誤如:java.net.NoRouteToHostException: No route to host

解決方法

在防火牆中開啟相應監聽埠,即可解決

2.1 升級JDK問題

1、避免JDK版本與應用不相容

問題

weblogic 升級過程中JDK 版本不相容問題

異常

典型錯誤如:has wrong version 50.0, should be 48.0

解決方法

需要在高版本jdk下重新編譯

2、預設效能正常載入問題

問題

使用64bit jdk但沒有正常載入64bit 的效能包

異常

典型錯誤如:   Unable To Load Performance Pack, Error code: BEA-000438

解決方法

Set   the following in commEnv.sh:

 

JAVA_USE_64BIT=true

SUN_ARCH_DATA_MODEL="64"

3、JDK BUG導致效能緩慢

問題

weblogic 升級過程中使用低版本java

異常

典型錯誤如:啟動過程中發費大量的時間

解決方法

需要升級至大版本下的最高版本jdk

4、weblogic中文亂碼問題

問題

weblogic   升級過程中出現大量中文亂碼問題

異常

典型錯誤如:   has wrong version 50.0, should be 48.0

解決方法

在啟動weblogic時 加上   JAVA_OPTIONS=-Dfile.encoding=GBK 解決以上問題     

在startweblogic,cmd中 加上

if   "%WLS_REDIRECT_LOG%"=="" (

    echo Starting WLS with line:

    echo %JAVA_HOME%\bin\java %JAVA_VM%

%MEM_ARGS%   %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME%

    -Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy  

 %PROXY_SETTINGS% %SERVER_CLASS%

    %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS%

 %JAVA_OPTIONS% -Dfile.encoding=GBK   -Dweblogic.Name=%SERVER_NAME%

     -Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy

 %PROXY_SETTINGS% %SERVER_CLASS%

)   else (

5、啟動weblogic服務緩慢問題

問題

weblogic 升級過程中使用低版本java

異常

典型錯誤如:啟動過程中發費大量的時間

解決方法

需要升級至大版本下的最高版本jdk

2.3 應用遷移改造問題

1、Hibernate 版本導致部分功能報錯

問題

Weblogic11g下部分使用hibernate2的功能不能正常使用

異常

org.hibernate.QueryException:   query must begin with SELECT or FROM: delete [delete com.unmi.User where   u.name='Unmi']

解決方法

升級hibernate3可解決此類問題

2、Hibernate啟動報錯

問題

Hibernate啟動報錯

異常

ClassNotFoundException:   org.hibernate.hql.ast.HqlToken

解決方法

將antlr-2.7.6.jar放到$JDK_HOME\lib\ext下面

原因:Weblogic預設先載入EJB-QL parser,存在重名類.將antlr-2.7.6.jar放於weblogic所用jdk的lib/ext下

可先載入antlr-2.7.6.jar

3、Session複製問題

問題

Java類未實現序列化介面導致session複製失敗

異常

java.io.NotSerializableException

解決方法

實現序列化介面可解決此類問題

4、web.xml格式配置問題

問題

應用的web.xml配置檔案不符合新版本規範

異常

應用啟動失敗

解決方法

按新版本規範重建配置檔案即可解決

5、第三方軟體包衝突問題

問題

應用部署失敗

異常

但是執行時報錯: DateUtils.addDate方法找不到

解決方法

按照要求,優先使用應用程式自帶的包,在web-inf下增加weblogic.xml
    <weblogic-web-app   xmlns="http://www.bea.com/ns/weblogic/90">
       <container-descriptor> 
             <prefer-web-inf-classes>true</prefer-web-inf-classes> 
       </container-descriptor> 
    </weblogic-web-app>

6、weblogic.xml格式配置問題

問題

應用的weblogic.xml配置檔案不符合新版本規範

異常

Caused   By org.xml.sax.SAXParseException Content is not allowed in prolog

解決方法

按新版本規範重建配置檔案即可解決

7、資料庫升級帶來的連線池問題

問題

資料庫升級後,應用程式使用舊版jdbc驅動導致連線出現問題

異常

java.sql.SQLException   Io 異常 Connection   refused(DESCRIPTION=(TMP=)(VSNNUM=186647296)(ERR=12505)

(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

解決方法

升級至新版本的jdbc驅動即可解決問題

8、訊息大小超賣

問題

頁面不能正常顯示,報錯超過訊息最大數

異常

weblogic.socket.MaxMessageSizeExceededException:   Incoming message of size: '12240' bytes exceeds the configured maximum of:   '10000' bytes for protocol: 'http'

解決方法

調整訊息大小即可解決

9、以資料夾模式部署後失敗

問題

以資料夾模式部署後失敗

異常

Deploy:fail

解決方法

建議以打包war的形式部署

10、程式碼中獲取路徑為null

問題

程式碼中獲取路徑為null

異常

Null

解決方法

需要在weblogic.xml裡新增

<container-descriptor>

<show-archived-real-path-enabled>true</show-archived-real-path-enabled>

</container-descriptor>

11、會話丟失與不一致問題

問題

session丟失或不一致的問題

異常

Session混亂

解決方法

weblogic11g weblogic.xml中配置
  <session-descriptor> 
        <cookie-http-only>false</cookie-http-only> 
  </session-descriptor>

12 、struts、 ibatis 等開源軟體的配置檔案中的相對路徑問題

問題

struts、ibatis等開源軟體的配置檔案中的相對路徑問題  

異常

找不到檔案

解決方法

簡單的解決辦法就是配置檔案放到classpath下

13、XML校驗錯誤

問題

xml校驗錯誤

異常

org.dom4j.DocumentException:   unknown protocol: platform. Nested exception: unknown protocol: platform

解決方法

這個經檢查是workshop匯出時 ,hbm.xml檔案生成錯誤。修改過來就好了

14、CXF在weblogic11g上部署問題

問題

xml校驗錯誤

異常

org.apache.cxf.js.rhino.DOMPayloadProvider"   failed to preload

解決方法

web.xml檔案的頭改為<web-app   xmlns="

15、   應用程式報SESSION ERROR

問題

SESSION   ERROR

異常

ERROR   org.directwebremoting.dwrp.Batch - A request has been denied as a potential   CSRF attack.

解決方法

修復:web.xml裡的DWR Servlet加
   <init-param>   
           <param-name>crossDomainSessionSecurity</param-name>   
           <param-value>false</param-value>
       </init-param>
    加入了跨域呼叫功能

2.4、部署問題
1、部署war 之後,測試時發生錯誤

問題

部署war之後,測試時發生錯誤

異常

Error   503--Service   Unavailable  

From   RFC     2068   Hypertext   Transfer     Protocol   --   HTTP/1.1:

解決方法

一般是在剛剛啟用更改後,就進行測試,還需要將該應用程式啟動,狀態為“活動”之後再測試就可以了。

2、 部署 WAR 包出現 struts-config.xml 解析問題

問題

struts-config.xml解析問題

異常

ERROR   Digester        []: Parse Error at line   2 column

15:   Document root element "struts-config", must match DOCTYPE root   "null".

org.xml.sax.SAXParseException:   Document root element "struts-config", must match

DOCTYPE   root "null".

解決方法

需要在struts-config.xml中第二行加入<!DOCTYPE   struts-config   PUBLIC     "-//Apache   Software   Foundation//DTD   Struts     Configuration

3、部署war報錯

問題

部署WAR出錯

異常

<2008-8-23   下午07時37分42秒 CST> <Warning> <Deployer> <BEA-149124> <

Failures   were detected while initiating redeploy task for application 'prj_fbysss'.   Error is: '

[Deployer:149163]The   domain edit lock is owned by another session in non-exclusi

ve   mode - this deployment operation requires exclusive access to the edit lock a  

nd   hence cannot proceed.'>

解決方法

進入,釋放配置,再次部署即可。

注:更新war:必須在刪除該應用,並啟用更改之後才能覆蓋。

但是用war方式,獲取資源路徑的方法和tomcat不同,存在臭名昭著的getRealPath等問題,移植困難,所以用目錄方式部署比較好。

具體方法:先把war解壓,然後在weblogic控制檯裡面選擇目錄部署。

4、JSP亂碼問題

問題

Jsp亂碼

異常

中文亂碼

解決方法

工程目錄下面的/WEB-INF裡面有一個weblogic.xml這個檔案裡有字符集設定

(這個weblogic.xml檔案是你在使用weblogic對自己的這個WEB工程進行釋出時,透過嚮導一步一步進行引數設定之後,自動生成的)。

    weblogic.xml裡的字符集設定為:

    <charset-params>     

        <input-charset>         

            <resource-path>/*</resource-path>         

            <java-charset-name>UTF-8</java-charset-name>     

        </input-charset> 

    </charset-params>

2.5 weblogic配置問題

1、連線池測試時報錯

問題

連線池測試時出錯

異常

Warning!   Connectivity to backend database not verified. This is either because required   connection pool attribute "TestConnectionsOnReserve" has not been   enabled, or an invalid value has been specified for attribute   "TestTableName". Please check the server log for more details..

解決方法

配置連線緩衝池,在“高階”中選中“保留時測試連線”即可。此時需要先啟用更改再進行測試。否則還會報錯。

2、JDBC JNDI錯誤 

問題

jdbc   jndi錯誤

異常

javax.naming.NameNotFoundException:   Unable to resolve 'jdbc_fbysss. Resolved ''; remaining name 'jdbc_fbysss'

解決方法

首先要在控制檯中點選左邊的控制欄中的服務->JDBC新建一個資料來源,資料來源名稱無所謂,jndi name一定要注意,比如取名叫jdbc_fbysss,而且,jdbc源必須依賴於一個server。否則無法啟動。

對於Spring專案,修改applicationContext.xml的dataSource,(Tomcat的連線池在這裡就不需要了)。

  <!-- 資料來源緩衝池 -->  <bean id="dataSource"     class="org.springframework.jndi.JndiObjectFactoryBean">   

        <property   name="jndiName" value="jdbc_fbysss"/><!--兩者要一樣-->  

        <property   name="resourceRef">

          <value>false</value>

        </property>  

        </bean>

weblogic10.3.6提供了很好的jndi資料來源配置功能,命名上要規範統一,如果是部署時報資料庫錯誤,先檢查是否已經設定了資料來源了,並把資料來源的“目標”指向伺服器。如果OK,檢查應用裡使用的jndi命名是否與weblogic裡配置的資料來源名稱一致。


                                                      有需要的朋友可以關注我的公眾號,文章每日一更


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2732535/,如需轉載,請註明出處,否則將追究法律責任。

相關文章