最全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之间白名单问题

问题

新建连接池失败

异常

典型错误如:  

解决方法

在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
   
        
             true 
      
 
   

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里添加

true

11、会话丢失与不一致问题

问题

session丢失或不一致的问题

异常

Session混乱

解决方法

weblogic11g weblogic.xml中配置
   
        false 
 

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文件的头改为

15、   应用程序报SESSION ERROR

问题

SESSION   ERROR

异常

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

解决方法

修复:web.xml里的DWR Servlet加
      
           crossDomainSessionSecurity   
           false
       

    加入了跨域调用功能

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中第二行加入

3、部署war报错

问题

部署WAR出错

异常

<2008-8-23   下午07时37分42秒 CST> <

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.'>

解决方法

进入http://localhost:7001/console,释放配置,再次部署即可。

注:更新war:必须在删除该应用,并激活更改之后才能覆盖。

但是用war方式,获取资源路径的方法和tomcat不同,存在臭名昭著的getRealPath等问题,移植困难,所以用目录方式部署比较好。

具体方法:先把war解压,然后在weblogic控制台里面选择目录部署。

4、JSP乱码问题

问题

Jsp乱码

异常

中文乱码

解决方法

工程目录下面的/WEB-INF里面有一个weblogic.xml这个文件里有字符集设置

(这个weblogic.xml文件是你在使用weblogic对自己的这个WEB工程进行发布时,通过向导一步一步进行参数设置之后,自动生成的)。

    weblogic.xml里的字符集设置为:

         

                 

            /*         

            UTF-8     

         

   

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的连接池在这里就不需要了)。

       

         

       

          false

          

       

weblogic10.3.6提供了很好的jndi数据源配置功能,命名上要规范统一,如果是部署时报数据库错误,先检查是否已经设置了数据源了,并把数据源的“目标”指向服务器。如果OK,检查应用里使用的jndi命名是否与weblogic里配置的数据源名称一致。


                                                      有需要的朋友可以关注我的公众号,文章每日一更


请使用浏览器的分享功能分享到微信等