一、前言
今天介绍一下各种类型常用中间件软件版本迁移需要注意的事项。
二、迁移事项
1、weblogic 版本升级
从 weblogic 低版本(如 weblogic 9 )升级到目前 x86 weblogic11g 环境下 , JDK 版本由 1.5 调整到 1.6 ,版本跨度较大, JDK 产品特性也随之变更,会造成代码不兼容的现象,需要开发商重新将应用程序使用 JDK 1.6 的编译器重新编译代码,做好相应的业务测试工作。
2、SOA版本升级
从 soa低版本(如 soa 9/10)升级到目前 x86 soa11g环境下,新旧 soa 环境运行机制差异很大,属于大版本的升级范畴,需要重新搭建一套 11g的环境,将现网数据库环境完整的迁移到新环境中去,然后把原先的应用在新环境上重新部署一遍、重新配置相应的数据源组件等。接下来在新的测试环境中,把所有的服务重新测试一遍,记录每一次变更结果,以便于在能够将应用能够从低版本 soa 平滑迁移到 soa 11g 环境中去。
3、不同类型中间件升级迁移
对于从其它中间件版 (tomcat jboss/websphere )迁移到 weblogic11g 环境下,需要对相应代码进行检查。
1. tomcat/jboss 迁移到 weblogic11g 注意事项
tomcat 是开源中间件产品,本身工作机制,不符合 J2EE 规范,迁移 weblogic 下需要按如下选项进行检查:
l JDK 和 Servlet 版本检查 :建议使用 JDK1.6 的版本编译现有最新源代码,由于 WebLogic11g 不支持 J2EE1.6 以下的版本, Servlet 规范使用 2.5 ,不能使用 3.0 。
l 第三方类加载检查 : 检查第三框架类加载机制,如 Struts 与 spring 框架类结合时,需要注意的是 Struts plugin 是通过 servlet 加载,排在 Listener 加载之后,而移植到 WebLogic 后, Struts 所有类会在容器启动的时候全部加载,导致 Struts Plugin 在 WebLogic 里不能使用 Spring 管理的 Bean 现象,建议对相应类加载进行修改,使用 Servlet init() 方法进行加载。
l 包含文件使用方式检查 :在 WebLogic 中不允许在一个文件中出现一次以上类似 <%@ page contentType="text/html; charset=GBK"%> 的代码,当使用 include file 时,请将被 include 的文件中类似代码删除,否则编译后客户端显示为乱码现象。
l 日志使用方式检查 : 如果应用程序中使用到 log4j 框架记录日志文件,需要在对应的 web.xml 文件中将 log4jListener 加载方式改 Servlet 加载方式。
l 绝对路径检查 : weblogic 是以 war 包的形式发布的,并没有 realPath ,故不能用 getServletContext().getRealPath("/") 获得绝对路径,需要修改成 getServletContext().getResource("/") 方式 。
l 反斜杠检查 : 在 Tomcat 下,引用另外一个 jsp 的时候正反斜杠是不区分的。但是到了 weblogic 下,会报文件找不到的情况,需将 \ 改为 / 即可。
l 第三方包冲突检查: 为了避免第三包与 weblogic 本身自带的包之间存加载冲突,可以设置 weblogic.xml prefer-web-inf-classes 属性让系统优先使用应用程序自带的包
2. websphere 迁移到 weblogic11g 注意事项
l JDK 版本检查 :部署在 websphere 上的应用是采用 IBM JDK 进行编译,建议使用 Oracle JDK1.6 的版本重新编译后再进行部署。
l 数据源检查 : 在 websphere 中应用程序使用数据源名称中可以有正斜杠,而在 weblogic 中因连接池名称命名规则问题显示不能实别,需要把正斜杠改了点号,并且将对应代码引用的改为新的名称即可。
l 通配符检查 : weblogic 不支持 classpath* 格式,只支持相对路径,如WEB-INF/classes/applicationContext.xml
l SESSION 检查 : weblogic 上如果需要配置 session 复制功能,需要在 weblogic.xml 里面配置 session-descriptor 相关信息,注意任何需要持久化的 session 中的内容必须都实现 java.io.Serializable 接口,否则无法进行复制。
4、跨操作系统迁移
从其它非 x86 操作系统( aix solaris windows 等)上跑的应用迁移到 x86 weblogic 11g 环境下,除了上面提到相应检查注意事项外,还需检查应用是否调用操作系统本身内部的文件如 so 文件,如有调用需要检查 x86 环境下是否有同样操作系统文件,或者采取其它方式进行解决。除此之外,还需将应用程序重新按 x86 weblogic11g 所属的 JDK 1.6 版本重新编译,再进行相应业务功能测试。
有需要的朋友可以关注我的公众号,文章每日一更
