最全weblogic升級與遷移改造常見問題
一、背景介紹
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
|
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中配置
|
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加
|
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- weblogic中介軟體版本遷移常見問題Web
- weblogic版本升級遷移需要注意事項Web
- iOS12測試版升級常見問題 iOS12值得升級嗎?iOS
- SQL Server 2016升級遷移過程中效能問題解決案例SQLServer
- gitlab的遷移和升級Gitlab
- gitlab安裝/遷移/升級流程Gitlab
- 技術分享:IPv6升級轉換常見問題盤點
- datagrip2019.1.4-升級資料遷移
- 常見問題
- Weblogic 補丁升級慢Web
- 常見的 PostgreSQL 升級錯誤SQL
- 關於CleanMyMac常見問題與解答Mac
- Grafana的版本升級和資料遷移Grafana
- vscode與chrome除錯配置與常見問題VSCodeChrome除錯
- js常見問題JS
- Homestead 常見問題
- Apache 常見問題Apache
- Linux 常見問題Linux
- Git 常見問題Git
- PHP 常見問題PHP
- swiper常見問題
- Composer 常見問題
- HTML常見問題HTML
- Git常見問題Git
- 前端常見問題前端
- 【Nginx】常見問題Nginx
- ndk 常見問題
- CSS常見問題CSS
- nginx 常見問題Nginx
- Mysql:常見問題MySql
- XSS常見問題
- MyBatis常見問題MyBatis
- java 常見問題Java
- 中科三方:IPv6升級改造過程中有哪些問題?
- Python程式設計常見問題與解答Python程式設計
- weblogic多資料來源故障轉移問題Web
- 移動端常見相容性問題解決方案
- iOS12 beta3常見問題 iOS12 beta3值得升級嗎iOS