简介
本文介绍如果将websphere的应用程序和环境配置迁移到Jboss。其实J2EE应用程序环境的迁移主要涉及两个方面(前提是目标环境操作系统层面已经全部配置完成):
1. 服务器配置的迁移:指的是应用程序包之外的配置,主要是环境配置,可以包含一些开源框架配置,需要迁移的服务器配置,包括WAS特定的一些资源配置(例如JMS相关资源,queue\topic\connection factory \store等等,JDBC数据源相关资源,数据库连接池,加密模式https相关配置,Javamail会话等等)。
2. 应用程序配置的迁移:指的是企业应用程序包(.ear)内部的全部配置,主要是内部一些描述符文件,一般都是xml,xlsd等等。因为两种产品的模式区别,所有有些描述文件不能直接cp过去使用,需要进行一些修改。
产品比较
WebSphere
WebSphere是 IBM 的集成软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的集成软件。
非开源,价位比较高;
只能获得试用版,集群版无法试用,必须购买。
Jboss
JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。2006年,Jboss公司被Redhat公司收购。
开源产品,企业版价位比较低。6.17% thecost of IBM。
获得介质和运行都非常方便,快速;
实施计划
迁移前的调查准备
在迁移实施之前,首先要做好对当前系统的情况的调查,主要是查看WebSphere服务器上的配置和业务处理情况。
主要收集如下信息:
1. WAS的运行版本和JVM的运行版本;
2. 应用代码所使用的框架,是否是用来其他开源的框架,如spring,struts,hibernate等等;
3. 当前WAS环境的配置情况,是否采用的Cluster, session共享如何做的;
4. 应用连接数据库的方式;
5. 系统运行什么业务逻辑,高峰期的最高并发量是多少。
部署计划制定
根据3.1的调查结果,选择和是版本并制定新环境Jboss的部署计划。
1. 硬件机器的选型和资源设置;
2. Jboss和JVM的版本选择;
3. 数据库的选择和连接配置方式;
4. Jboss服务的安装和和详细配置描述,包括
1)JDK的安装目录,JAVA_HOME设置
2)Jboss的安装目录,和用户权限设置
3)Jboss Cluster中成员的服务端口
4)集群负载均衡方式的选择,硬件或者是软件
5)Jboss服务启动所需要加载的第3方jar包
6)Jboss运行的基本参数设计
7)Jboss服务的启动方式
8)Jboss服务运行的日志管理,保存策略、保存的目录
9)J2EE应用程序的上传方式和部署模式确定
10) Jboss安全方面的设置
11) 如果有JMS服务,需要设计JMS的传递模式PTP还是PS
服务器配置迁移
迁移服务器配置,指的是将WebSphere上的位于应用程序之外的设置迁移到Jboss上,这些设置可以是JDBC,JMS,J2EE安全,及邮件服务等等。
这个要通过WebSphere的Admin console或者是Admin命令进行检查,并将设置信息收集起来,配置到Jboss服务器上。如下图:

这个步骤里面包括,安装JDK、jboss安装、负载均衡的配置等基础设施的实施。
应用程序配置迁移
迁移应用程序配置实质上指将包含在特定于 WebSphere 的部署描述符中的设置移到 Jboss ApplicationServer 中。这些设置包括从 EJB 组件到全局 JNDI 命令空间的映射、各种性能相关的设置(例如池大小)、事务的隔离级别、EJB 查询语言的扩展,等等。部署描述符描述了 J2EE 应用程序所需的执行环境,它有两种常规变体:
1. 行业标准部署描述符是可移植的,通常不需要做任何更改就可以。
如下图:

2. 特定产品的部署描述符,需要进行重新设置
这些部署描述符文件是特定的产品的文件,如websphere,webogic,的一样。如下图:

映射启动脚本
本部分描述如何将这些服务器配置元素从 WebSphere映射到 Jboss Server:
1.jvm参数
自定义的启动脚本中指定 JVM 参数是很常见的 WebSphere实践。也有WebSphere Admin console中设置JVM参数的。下面是正在使用的 Sun™ JVM 选项的一个示例:
-server -Xms1024m-Xmx1024m
2. 系统参数
这个在启动脚本中设置的一些系统参数,举例如log4j的设置如下:
-Dtangosol.coherence.distributed.localstorage=true
-Dlog4j.configuration=file:///myprojects/config/log4j.xml
3. 类路径
在启动脚本中可能会加入一些第3方的jar包,这些包含了应用需要调用的类,一般是设置在class_path中。
可能出现的问题
1. 最常见的迁移中的错误就是jar包冲突问题,应用的jar包和jboss的jar包冲突。
2. Jsppost或者get方法传递的中文乱码问题,需要在Jsp或者jboss的配置文件中制定编码。
3. jboss的xml解析器与websphere的xml解析器不同,造成某些taglib使用上出错。
4. servletapi实现不一致的问题,IBM 的JDK和Oracle 的JDK api实现有不一致有可能导致应用报错,需要改代码。
本人总结不一定完善,欢迎各位留言讨论,提出建议。
欢迎长按扫描关注 【China中间件】公众号,本平台专注中间件技术的分享和传播,有问题敬请留言。





