一,原项目weblogic中配置说明(项目使用两个数据源,用到了sessionBean和entityBean)
1,一个jdbc pool连接池,两个DataSource数据源(一个是TX,一个是非TX)
*如何区分WAS中的两种数据源?
2,ejb的部署(原使用weblogic.xml),以及使用jndi查找EJB的方式
*迁移需要修改的三个weblogic配置文件:
weblogic-ejb-jar.xml
EJB 部署描述符
weblogic.xml
Web 应用程序部署描述符
weblogic-cmp-rdbms-jar.xml
持久性部署描述符,它为每个将使用容器管理的持久性的 EJB 定义持久性元素。
二,his与was插件配置(确保WAS可以正常解析静态HTML文件,jsp,servelt,EJB)
1,安装HIS
2,运行GenPluginCfg.bat生成plugin-cfg.xml
3,安装websphere-plug-in,此plug安装程序会在http.conf中生成以下两行:
LoadModule was_ap20_module "D:/WebSphere/Plugins/bin/mod_was_ap20_http.dll"
WebSpherePluginConfig "D:/WebSphere/AppServer/profiles/default/config/cells/plugin-cfg.xml"
4,修改http.conf中,即通过apache来解析web-module中的静态文件
DocumentRoot “与WAS相同的Web目录”
4,启动WAS和HIS,测试是否可以正常访问was6根下的DefaultApplication应用
参考文档:
http://www-128.ibm.com/developerworks/cn/websphere/zones/studio/wl2was.html
三,迁移步骤:
1,下载并安装WAS6(Express或Base版)
2,安装完后使用系统服务或was提供的菜单启动was
3,到管理控制台建立jdbc连接池和数据源
*修改JDBC环境变量
*建立连接池
*建立数据源
4,java获取连接池的代码(不需要修改)
5,修改EJB的DD文件
问题:
1,未装APACHE时DEFAULTAPP不能解释HTML,但其它应用的HTML却可以解析
*但后来新装的应用没做改动却又可以解释HTML了
2,,安装APACHE后,需要更新plugin-cfg.xml才能访问WSA中新装的应用,但不能解析HTML
3,测试EAR
*使用JB2006生成的EAR文件,包含一个WEB,两个EJB,可以正常部署
*把上述EAR包删掉EAR和WAR的IBM的两个文件,可以正常部署
*把上述EAR包中EJB换为未COMPILE过的EJB,可以正常部署
*把上述EAR包中WAR换为不带WAR扩展名的目录,出现错误
*把上述EAR包中WAR换为带WAR扩展名的目录,出现错误
WEB结论:一定要把WEB打成WAR包才行,并把APPLICTION.XML内容改成对应WAR包
*要对EJB中的jndi重命名
新增: ibm-ejb-jar-bnd.xmi,在此文件中配置EJB的JNDI名字(可以先使用WS生成这个文件,然后再修改JNDI名字)
修改ejb-jar.xml,给每个SESSION加个ID,并和ibm-ejb-jar-bnd.xmi中的ID对应起来
注:检查EJB-JNDI是否都是带包名的,一定要检查
*经过上述修改,部署成功,(使用SUN JKD编译)但在运行登录时出现错误(后来得出原来是EJB的JNDI没找到,那时还没有修改EJB的JNDI NAME):
把ANT的JAVA编译版本改为IBM JDK(后面验证,不需要此步,但如果出现问题最好使用IBM JDK)
*部署运行成功,但页面全部是乱码,原页面使用的字符集为:
<%@page contentType="text/html; charset=GBK" language="java" %>
改为:
<%@ page contentType="text/html; charset=GBK" %>
就好了,因为前一句中有全角的空格字符,WEBSPHERE比较严格
*数据源类型:运行系统时查询数据库可以成功,但不能做更新动作,
数据源类型有问题(TX和非TX)
把NPLDS中的属性: 将此数据源用于容器管理持久性(CMP)(默认是打钩)去掉
也不行
对系统中的CMP需要单独处理