一,原項目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需要單獨處理