<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    如何將基于 Struts、Spring 和 Hibernate 的應(yīng)用從 Tomcat 遷移到 WebSphere Application Server

    引言

    現(xiàn)在很多的企業(yè)都在使用開源框架開發(fā)自己的企業(yè)級(jí)應(yīng)用,如 Struts、Spring 和 Hibernate 等。起初由于受到資金和規(guī)模等的限制,大部分應(yīng)用都部署在 Tomcat 或 Jboss 等開源應(yīng)用服務(wù)器上。但隨著業(yè)務(wù)不斷發(fā)展,對(duì)應(yīng)用部署的安全和性能要求也越來越高,企業(yè)希望將現(xiàn)有的開源應(yīng)用從開源服務(wù)器遷移到商業(yè)應(yīng)用服務(wù)器之上,比如:WebSphere Application Server ( 以下簡(jiǎn)稱為 WAS),通過 WAS 增強(qiáng)應(yīng)用整體性能,并實(shí)現(xiàn)更加可靠的管理。本文將通過實(shí)例向大家介紹如何將開源應(yīng)用從 Tomcat 遷移到 WAS,并幫助大家解決一些可能遇到的普遍問題。

    基于 Eclipse 開發(fā)的 Struts、Spring 和 Hibernate 開源應(yīng)用和開發(fā)環(huán)境的特點(diǎn)

    隨著 Java 技術(shù)的逐漸成熟與完善,作為建立企業(yè)級(jí)應(yīng)用的標(biāo)準(zhǔn)平臺(tái),J2EE 平臺(tái)得到了長(zhǎng)足的發(fā)展。借助于 J2EE 規(guī)范中包含的多項(xiàng)技術(shù):Enterprise JavaBean (EJB)、Java Servlets (Servlet)、Java Server Pages (JSP)、Java Message Service (JMS) 等,大量的應(yīng)用系統(tǒng)被開發(fā)出來。但是,在傳統(tǒng) J2EE 應(yīng)用的開發(fā)過程中也出現(xiàn)了一些問題,比如在存儲(chǔ)和讀取過程中使用大量 SQL 和 JDBC 操作,會(huì)降低編程的效率以及系統(tǒng)的可維護(hù)性;過去傳統(tǒng)的 J2EE 應(yīng)用多采用基于 EJB 的重量級(jí)框架 ( 比如:EJB 2.1),這樣做的問題在于使用 EJB 容器進(jìn)行開發(fā)和調(diào)試需要耗費(fèi)大量時(shí)間并且耦合度非常高,不利于擴(kuò)展。
    在摸索過程中,各種開源框架孕育而生。開源框架以其免費(fèi)、開源和簡(jiǎn)單等特點(diǎn)逐漸成為開發(fā)人員的最愛,現(xiàn)在仍然有很多的企業(yè)使用開源框架開發(fā)自己的應(yīng)用程序。在開源框架中使用最多的就是 Struts、Spring 和 Hibernate 整合框架 ( 以下簡(jiǎn)稱 SSH 框架)。
    典型的 J2EE 三層結(jié)構(gòu),分為表現(xiàn)層、中間層(業(yè)務(wù)邏輯層)和數(shù)據(jù)服務(wù)層。三層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問及合法性校驗(yàn)等工作放在中間層處理。客戶端不直接與數(shù)據(jù)庫(kù)交互,而是通過組件與中間層建立連接,再由中間層與數(shù)據(jù)庫(kù)交互。下面就介紹以下 SSH 框架在 J2EE 三層結(jié)構(gòu)中的作用:
    • Struts 是一個(gè)在 JSP Model2 基礎(chǔ)上實(shí)現(xiàn)的 MVC 框架,主要分為模型 (Model) 、視圖 (Viewer) 和控制器 (Controller) 三部分,其主要的設(shè)計(jì)理念是通過控制器將表現(xiàn)邏輯和業(yè)務(wù)邏輯解耦,以提高系統(tǒng)的可維護(hù)性、可擴(kuò)展性和可重用性。
    • Spring 是一個(gè)解決了許多 J2EE 開發(fā)中常見問題并能夠替代 EJB 技術(shù)的強(qiáng)大的輕量級(jí)框架。這里所說的輕量級(jí)指的是 Spring 框架本身,而不是指 Spring 只能用于輕量級(jí)的應(yīng)用開發(fā)。Spring 的輕盈體現(xiàn)在其框架本身的基礎(chǔ)結(jié)構(gòu)以及對(duì)其他應(yīng)用工具的支持和裝配能力。與傳統(tǒng) EJB ( 比如 EJB 2.1) 相比,Spring 可使程序研發(fā)人員把各個(gè)技術(shù)層次之間的風(fēng)險(xiǎn)降低。當(dāng)然,隨著 Java EE 5 及 Java EE 6 中新 EJB 規(guī)范的出現(xiàn),如:EJB 3.0, EJB 3.1,EJB 的開發(fā)變得越來越簡(jiǎn)單。用戶可以根據(jù)自己的需求和能力,選擇合適的框架。想了解更多關(guān)于 Java EE 5 和 Java EE 6 中的內(nèi)容,請(qǐng)參考參考資源 [4] 和 [5]。
    • Hibernate 是一個(gè)數(shù)據(jù)持久層框架,是一種實(shí)現(xiàn)對(duì)象和關(guān)系之間映射 (O/R Mapping) 的工具,它對(duì) JDBC 進(jìn)行了輕量級(jí)的對(duì)象封裝,使程序員可以使用對(duì)象編程思想來操作數(shù)據(jù)庫(kù)。它不僅提供了從 Java 類到數(shù)據(jù)表的映射,也提供了數(shù)據(jù)查詢和恢復(fù)機(jī)制。相對(duì)于使用 JDBC 和 SQL 來操作數(shù)據(jù)庫(kù),使用 Hibernate 能大大的提高開發(fā)效率。
    SSH 框架雖然非常強(qiáng)大,但也有一些缺點(diǎn),比如 : 相比 Servlet+JDBC 開發(fā)方式,復(fù)雜度增加了不少 ; 而且開源框架開發(fā)和部署的靈活性,使得其使用方式不是很符合現(xiàn)有的 J2EE 規(guī)范,從而導(dǎo)致從 Tomcat 或其他開源服務(wù)器上遷移到 WAS 會(huì)出現(xiàn)很多問題和異常。并且,因?yàn)槟J(rèn)的 Eclipse 或 MyEclipse 工具缺少 WAS 的運(yùn)行時(shí)插件,使得開發(fā)的開源應(yīng)用程序無法直接從 IDE 里部署到 WAS。接下來,我們會(huì)分步介紹從 Tomcat 遷移到 WAS 可能出現(xiàn)的問題,雖然不能涵蓋遷移過程中的所有問題,但希望能夠拋磚引玉,盡量解決一些普遍存在的問題。
    以下使用的實(shí)例是利用 Struts2+Spring2+Hibernate3 開發(fā)的模擬醫(yī)院管理應(yīng)用。其中功能模塊包括前臺(tái)的顯示模塊、登錄模塊、后臺(tái)的文章和藥品管理模塊、用戶管理模塊等基本模塊;數(shù)據(jù)庫(kù)包括藥品、文章、學(xué)生、教師和看病等數(shù)據(jù)表。我們利用 Struts 實(shí)現(xiàn) MVC 模型處理前臺(tái)的各種請(qǐng)求;利用 Hibernate 將數(shù)據(jù)持久化并簡(jiǎn)化對(duì)數(shù)據(jù)的查詢;利用 Spring 進(jìn)行依賴注入控制整個(gè)業(yè)務(wù)邏輯層。圖 1 為應(yīng)用的部分包和配置文件結(jié)構(gòu)

    圖 1. 應(yīng)用部分包結(jié)構(gòu)和相關(guān)配置文件
    圖 1. 應(yīng)用部分包結(jié)構(gòu)和相關(guān)配置文件

    配置好 MYSQL,將應(yīng)用部署到 Tomcat 正常顯示頁(yè)面如下:


    圖 2. 應(yīng)用主頁(yè)
    圖 2. 應(yīng)用主頁(yè)
    這里需要注意的是,由于開源框架的開發(fā)和目錄結(jié)構(gòu)不規(guī)范,導(dǎo)致在 WAS 中部署 WAR 文件失敗。您可能會(huì)看到諸如“EAR 文件可能已損壞或不完整。確保對(duì)于 WebSphere Application Server,該應(yīng)用程序處于兼容的 Java 2 Platform, Enterprise Edition (J2EE) 級(jí)別。”這樣的錯(cuò)誤。

    圖 3. WAS 中應(yīng)用部署錯(cuò)誤
    圖 3. WAS 中應(yīng)用部署錯(cuò)誤
    遇到上述錯(cuò)誤的原因,可能是因?yàn)?WAR 文件中包含 EXE 文件或者 WAR 文件結(jié)構(gòu)不規(guī)范,去掉這些文件或調(diào)整文件結(jié)構(gòu)即可解決該錯(cuò)誤。

    遷移之前的準(zhǔn)備工作

    遷移之前的準(zhǔn)備工作非常關(guān)鍵。我們首先要確保應(yīng)用可以在 Tomcat 成功運(yùn)行,當(dāng)然我們還需要確認(rèn)以下幾個(gè)方面:
    1. Tomcat 啟動(dòng)正常
    2. Struts、Spring 和 Hibernate 所需要的 lib 包都包含在應(yīng)用的 WAR 或者 EAR 包中
    3. 應(yīng)用在 Tomcat 上部署并且啟動(dòng)成功
    4. 應(yīng)用的 Struts 功能啟動(dòng)成功,并能正常處理請(qǐng)求
    5. 應(yīng)用的數(shù)據(jù)庫(kù)連接正常,Hibernate 映射成功并能正常實(shí)現(xiàn)數(shù)據(jù)持久化
    6. 應(yīng)用的 Spring 功能成功,并能將所需要的資源注入到應(yīng)用中
    7. 測(cè)試應(yīng)用的其他功能確保應(yīng)用整體運(yùn)行正常
    同時(shí)查看 Tomcat、Eclipse 的日志,確保應(yīng)用沒有編譯異常或錯(cuò)誤。當(dāng)然我們利用 Eclipse 或者 MyEclipse 開發(fā)應(yīng)用時(shí)可能會(huì)用到 WAS 的插件,我們?cè)诓渴鹬耙欢ㄒ_保系統(tǒng)中只有一個(gè) WAS 實(shí)例在運(yùn)行。如果其他 WAS 實(shí)例運(yùn)行,可能會(huì)出現(xiàn)端口沖突等錯(cuò)誤,這時(shí) WAS 會(huì)提示一些錯(cuò)誤:
    清單 1. WAS 端口沖突錯(cuò)誤
                org.omg.CORBA.INTERNAL: CREATE_LISTENER_FAILED_4 vmcid: 0x49421000 minor code:
                Caused by: org.omg.CORBA.INTERNAL: CREATE_LISTENER_FAILED_4  vmcid: 0x49421000  minor
                code: 56  completed: No
                at com.ibm.ws.orbimpl.transport.WSTransport.createListener(WSTransport.java:719)
                at com.ibm.ws.orbimpl.transport.WSTransport.initTransports(WSTransport.java:591)
                at com.ibm.rmi.iiop.TransportManager.initTransports(TransportManager.java:155)
                at com.ibm.rmi.corba.ORB.set_parameters(ORB.java:1212)
                at com.ibm.CORBA.iiop.ORB.set_parameters(ORB.java:1662)
                at org.omg.CORBA.ORB.init(ORB.java:364)
                at com.ibm.ws.orb.GlobalORBFactory.init(GlobalORBFactory.java:86)
                at com.ibm.ejs.oa.EJSORBImpl.initializeORB(EJSORBImpl.java:179)
                at com.ibm.ejs.oa.EJSServerORBImpl.<init>(EJSServerORBImpl.java:102)
                at com.ibm.ejs.oa.EJSORB.init(EJSORB.java:55)
                at com.ibm.ws.runtime.component.ORBImpl.start(ORBImpl.java:379)
                ... 26 more
                

    WAS 在啟動(dòng)的時(shí)候拋出以上異常,這主要是因?yàn)槎丝跊_突,我們可以查看系統(tǒng)中是否有已經(jīng)啟動(dòng)的 WAS 或者別的程序正在占用此端口。也可以通過修改概要文件 config\cells\cellname\nodes\nodename 目錄下的 serverindex.xml 文件中的端口解決。
    應(yīng)用和環(huán)境都沒問題了,我們就可以著手遷移應(yīng)用了。

    部署中 Struts 框架可能遇到的問題所遇到的問題

    Struts 框架最早是作為 Apache Jakarta 項(xiàng)目的組成部分問世運(yùn)作,它繼承了 MVC 的各項(xiàng)特性,并根據(jù) J2EE 的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。Struts 框架很好的結(jié)合了 Jsp,Java Servlet,Java Bean,Taglib 等技術(shù)。
    不論是 Struts1 還是 Struts2,很多部署問題都跟 lib 包沖突有關(guān),所以在部署應(yīng)用的時(shí)候要盡量查看一下應(yīng)用 WAR 文件本身是否存在相互沖突的 jar 文件,WAR 文件和 WAS 所帶的包是否存在相互沖突。我們總結(jié)了一些 Struts 包沖突的問題供大家參考:
    啟動(dòng)應(yīng)用的時(shí)候報(bào) Unable to load bean typecom.opensymphony.xwork2.ObjectFactory classorg.apache.struts2.impl.StrutsObjectFactory 錯(cuò)誤。這種錯(cuò)誤多是由于 WAS 中存在相同 sturts2-core jar 文件與應(yīng)用 WAR 或者 EAR 文件中 struts 包沖突。建議刪除 WAR 包中的 jar 文件,即可解決此問題。
    還有一種情況是在 Tomcat 下項(xiàng)目運(yùn)行沒有任何問題,但把 WAR 包安裝在 WAS 中只能訪問 HTML 頁(yè)面了,其余的 Struts2 的請(qǐng)求和 JSP 頁(yè)面都不能訪問,提示您無權(quán)查看此頁(yè)面,查看 WAS 日志文件中發(fā)現(xiàn),啟動(dòng)時(shí)有類似錯(cuò)誤:
    清單 2. WAS 包沖突錯(cuò)誤
                [11-8-18 15:17:41:079 CST] 00000010 webapp E com.ibm.ws.webcontainer.webapp.WebApp
                initializeExtensionProcessors SRVE0280E:
                擴(kuò)展處理器無法在工廠
                [com.ibm.ws.jsp.webcontainerext.ws.WASJSPExtensionFactory@2bec2bec]
                中進(jìn)行初始化:java.lang.ClassCastException:
                com.sun.faces.application.WebappLifecycleListener
                incompatible with java.util.EventListener
                ……
                [10-8-18 15:17:41:562 CST] 00000010 config I Initializing
                Sun's JavaServer Faces implementation (1.2_07-b03-FCS) for context '/cc'
                [10-8-18 15:17:44:579 CST] 00000010 webapp W com.ibm.ws.webcontainer.webapp
                .WebApp initializeTargetMappings SRVE0269W: 找不到用于處理 JSP 的擴(kuò)展處理器。
                

    解決方法有兩種:
    • 在應(yīng)用程序服務(wù)器 -> [ 選擇所使用的服務(wù)器 ] -> Web 容器設(shè)置 -> Web 容器 -> 定制屬性,增加名稱為"com.ibm.ws.webcontainer.invokefilterscompatibility"的定制屬性,值設(shè)為 true。
    • 或者檢查 WAR 文件的 lib 庫(kù)中是否存 jsf-api.jar,jsf-impl.jar,jstl-1.2.jar 三個(gè) jar 文件。這是因?yàn)樵谑褂?MyEclipse 開發(fā)時(shí),MyEclipse 會(huì)自動(dòng)將這三個(gè) jar 文件加入到 lib 庫(kù)中,但 jsf-impl.jar 包中的 com.sun.faces.application.WebappLifecycleListener 與 java.util.EventListener 不兼容導(dǎo)致應(yīng)用無法訪問,打開 WAR 包的 lib 目錄,刪除這三個(gè) lib 包即可解決問題。

    部署中 Spring 框架可能遇到的問題所遇到的問題

    Spring 框架支持輕量級(jí)的企業(yè)應(yīng)用開發(fā)。作為開源項(xiàng)目,Spring 框架得到了廣泛的支持。目前大多數(shù) SSH 架構(gòu)的開源應(yīng)用以 Tomcat 作為開發(fā)以及測(cè)試的 Web 容器。 WAS 也同樣支持基于 Spring 框架的項(xiàng)目開發(fā)和部署,除了支持 Spring 框架本身的資源管理以及支持事務(wù)的特性外,WAS 也可以依靠自身的容器管理、事務(wù)支持等帶來更加可靠的運(yùn)行時(shí)環(huán)境。本文該部分將初步介紹基于 Spring 框架的開源應(yīng)用從 Tomcat 上移植到 WAS 上需要注意的方面。 使用 Spring 開發(fā)的應(yīng)用可以同時(shí)使用 Struts 和 Hibernate。整合了 Struts、Spring 和 Hibernate 進(jìn)行開發(fā)的應(yīng)用只要保證需要的 JAR 包全部打包在應(yīng)用中,便可以正確的部署到 WAS 上。其中,WAS 不提供 Tomcat 缺省提供的一些開源 JAR 包,需要將這些包包含在應(yīng)用中。此外,WAS 提供了很多 J2EE 相關(guān)特性,如果 Spring 要使用這些特性,則需要對(duì) Spring 做相關(guān)配置。

    數(shù)據(jù)訪問

    Spring 整合 Hibernate 時(shí),數(shù)據(jù)源配置信息應(yīng)該定義在 applicationContext.xml 文件中。清單 3 給出了一個(gè)典型的配置數(shù)據(jù)源信息的示例。您可以將這段代碼不做任何修改,加入到 applicationContext.xml 文件中,并放到打包之后的應(yīng)用中,WAS 會(huì)自動(dòng)識(shí)別并利用 Spring 框架完成數(shù)據(jù)源的配置。
    清單 3. applicationContext.xml 文件中的數(shù)據(jù)源配置
                <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
                <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"></property>
                <property name="url" value="jdbc:db2://localhost:50000/MYTEST"></property>
                <property name="username" value="db2admin"></property>
                <property name="password" value="password"></property>
                </bean>
                <bean id="sessionFactory"
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="dataSource">
                <ref bean="dataSource" />
                </property>
                <property name="hibernateProperties">
                <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>
                </props>
                </property>
                <property name="mappingResources">
                <list><value>com/ibm/user/Person.hbm.xml</value></list>
                </property>
                </bean>

    您也可以使用 WAS 中已經(jīng)配置好的數(shù)據(jù)源,在 Spring 的配置文件 applicationContext.xml 文件中聲明數(shù)據(jù)源的代理 Bean,將 WAS 的數(shù)據(jù)源等資源通過該 Bean 委托給 Spring 框架進(jìn)行調(diào)用。清單 4 給出了一個(gè)使用該方式進(jìn)行配置的 applicationContext.xml 文件的片段。應(yīng)用在運(yùn)行時(shí)會(huì)使用該 Bean 找到相應(yīng)的數(shù)據(jù)源完成與數(shù)據(jù)庫(kù)的交互。
    清單 4. applicationContext.xml 文件中配置 WAS 數(shù)據(jù)源
                <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
                <property name="jndiName"><value> java:comp/env/jdbc/SSHTestDB</value></property>
                </bean>

    事務(wù)管理

    Spring 框架同 WAS 一樣支持兩種事務(wù)管理的方式,分別為編程式和聲明式。大多數(shù)的用戶會(huì)選擇聲明式的事務(wù)管理方式,這種方式也是推薦使用的。
    通常情況下 Spring 事務(wù)管理的一個(gè)核心是 PlatformTransactionManager 接口,使用聲明方式的事務(wù)管理的類均實(shí)現(xiàn)該接口,如對(duì)數(shù)據(jù)源進(jìn)行事務(wù)管理的 DataSourceTransactionManager,對(duì) Hibernate 進(jìn)行事務(wù)管理的 HibernateTransactionManager 等。用戶可以選擇繼續(xù)使用這些事務(wù)管理方法,在 applicationContext.xml 文件中做相應(yīng)的配置,如清單 5 所示,然后打包部署到 WAS 上完成應(yīng)用的安裝和配置。
    清單 5. Spring 框架的事務(wù)管理配置
                <bean id="txManager"
                class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                <property name="dataSource" ref="dataSource"/>
                </bean>
                <bean id="txManager"
                class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                <property name="sessionFactory" ref="sessionFactory" />
                </bean>
                

    其中 ref=”dataSource” 對(duì)應(yīng)于清單 3 中的 Bean id=”dataSource”;ref=”sessionFactory”對(duì)應(yīng)于清單 3 中的 bean id="sessionFactory"。 WAS 支持 JTA,而 Spring 也提供了 JtaTransactionManager。因此也可以將 Spring 中的事務(wù)管理交給 WAS 來做。Spring 2.5 之后提供的特定于 WAS 的事務(wù)管理的實(shí)現(xiàn)類為 WebSphereUowTransactionManager,您可以在 applicationContext.xml 文件中進(jìn)行相應(yīng)的配置,將事務(wù)的管理交由 WAS 來做。如清單 6 所示。其中配置的 bean id="transactionManager" 并不需要知道自己為哪些資源負(fù)責(zé),因?yàn)樗褂昧?WAS 容器的全局事務(wù)管理體系。
    清單 6. Spring 配置 WAS 的事務(wù)管理
                <bean id="txManager"
                class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
                </bean>
                <bean id="transactionManager"
                class="org.springframework.transaction.jta.JtaTransactionManager">
                <property name="transactionManager">
                <ref local="txManager"/>
                </property>
                </bean>


    Hibernate 做為數(shù)據(jù)持久層框架非常靈活,易于上手,并且便于與其它開源框架整合,從而使它成為開源解決方案中數(shù)據(jù)持久層框架的不二選擇。Hibernate 從 3.2 開始,就開始兼容 JPA。Hibernate3.2 獲得了 Sun TCK 的 JPA (Java Persistence API) 兼容認(rèn)證。這使它的應(yīng)用范圍更加廣泛。這里介紹將使用 Hibernate 做為持久層的應(yīng)用移植到 WAS 上時(shí)需要注意的方面。 在項(xiàng)目初期,由于定位或需求的原因,很多 Hibernate 應(yīng)用都使用 Tomcat 或 Jboss 做為應(yīng)用服務(wù)器。隨著項(xiàng)目規(guī)模越來越大,對(duì)應(yīng)用的可靠性和安全要求越來越高,就會(huì)考慮向商業(yè)應(yīng)用服務(wù)器的遷移。總的來說,對(duì)一個(gè)可以正常運(yùn)行在 Tomcat 或 Jboss 上的應(yīng)用來說,移植到 WAS 上非常簡(jiǎn)單,并不需要做太多改動(dòng),只需要將應(yīng)用所依賴的 Hibernate 相關(guān) jar 包都打包在應(yīng)用中,再更具情況對(duì)配置文件做輕微調(diào)整即可,不用修改任何 Java 源代碼。

    保持原有連接方式

    很多 Hibernate 應(yīng)用采用 JDBC 的鏈接方式,即在配置文件 hibernate.cfg.xml 中配置 connection.url 屬性,指定數(shù)據(jù)庫(kù)鏈接信息。例如:<property name="connection.url">jdbc:db2://db2url:port/dbname</property>
    這種應(yīng)用程序往往還要使用第三方提供的數(shù)據(jù)庫(kù)連接池,例如 C3P0 等。如果在移植到 WAS 之后仍然想保持現(xiàn)有連接形式和數(shù)據(jù)庫(kù)連接池不變,則不需要對(duì)配置文件做任何修改,只需要將第三方提供的數(shù)據(jù)庫(kù)連接池所依賴的 jar 包文件一同打包到 WAS 應(yīng)用中即可。例如將 C3P0 數(shù)據(jù)庫(kù)連接池 jar 文件 c3p0-0.9.1.jar 打包到應(yīng)用程序 lib 目錄下。

    使用 WebSphere Application Server 數(shù)據(jù)源

    WAS 數(shù)據(jù)源有著眾多企業(yè)級(jí)優(yōu)勢(shì),很多用戶移植后都希望能使用到 WAS 做為企業(yè)級(jí)應(yīng)用服務(wù)器數(shù)據(jù)層的強(qiáng)大功能,對(duì) Hibernate 的移植也不例外。其實(shí)將 Hibernate 應(yīng)用的數(shù)據(jù)源移植到 WAS 非常簡(jiǎn)單,只需要在 hibernate.cfg.xml 配置文件中加入數(shù)據(jù)源屬性 connection.datasource 和 JNDI 提供商信息即可,無需修改任何源代碼。這里需要注意,一旦配置好 WAS 的數(shù)據(jù)源,WAS 將接管與數(shù)據(jù)庫(kù)通信的工作,如果在您以前的應(yīng)用中使用了第三方數(shù)據(jù)庫(kù)連接池,將會(huì)產(chǎn)生沖突。解決方法也很簡(jiǎn)單,只要將 hibernate.cfg.xml 配置文件中的關(guān)于第三方數(shù)據(jù)庫(kù)連接池的信息注釋或刪除即可。 總結(jié)起來可分為三步:
    1. 將數(shù)據(jù)庫(kù)連接信息

      <property name="connection.url">jdbc:db2://db2url:port/dbname</property>

      替換為 WAS 數(shù)據(jù)源信息

      <property name="connection.datasource">jdbc/hibernate</property>

    2. 加入 jndi.class 屬性

      <property name="jndi.class">com.ibm.websphere.naming.WsnInitialContextFactory</property>

    3. 注釋或刪除原有數(shù)據(jù)庫(kù)連接池相關(guān)屬性

    現(xiàn)在的開源框架越來越龐大,同一框架不同版本的區(qū)別也很大。這篇文章雖不能覆蓋開源框架遷移到 WAS 的所有問題,但總結(jié)的都是一些比較普遍的問題,力求讓用戶快速地發(fā)現(xiàn)和解決部署和遷移過程中的問題。在遷移過程中,應(yīng)用的代碼基本不需要修改,只要配置和部署得當(dāng),從 Tomcat 將開源應(yīng)用遷移到 WAS 并不是一件難事。

    posted on 2011-11-15 21:43 paulwong 閱讀(1184) 評(píng)論(0)  編輯  收藏 所屬分類: Websphere

    主站蜘蛛池模板: 1区1区3区4区产品亚洲| 亚洲午夜福利在线视频| 亚洲最大av资源站无码av网址| 日韩精品无码免费视频| 亚洲高清视频免费| 亚洲国产精品专区在线观看| 亚洲网站在线播放| 日本激情猛烈在线看免费观看| 8x8×在线永久免费视频| 免费在线观看中文字幕| 亚洲最大在线视频| 一区二区三区免费高清视频| 免费观看的毛片大全| 亚洲永久精品ww47| 亚洲精华国产精华精华液| 人妻无码一区二区三区免费| 亚洲国产成人久久综合一区77| 亚洲国产福利精品一区二区| 中国一级特黄的片子免费| 好吊妞998视频免费观看在线| 亚洲国产精品第一区二区| 理论片在线观看免费| 欧美最猛性xxxxx免费| 亚洲av色影在线| sihu国产精品永久免费| 免费激情视频网站| 亚洲导航深夜福利| 成人网站免费看黄A站视频| 青青青国产色视频在线观看国产亚洲欧洲国产综合| 久久久久亚洲AV无码麻豆| 9i9精品国产免费久久| 国产一级淫片视频免费看| 亚洲三级在线播放| 99re热精品视频国产免费| 中文字幕在线亚洲精品 | 波多野结衣在线免费观看| 亚洲人色婷婷成人网站在线观看| 久久亚洲精品无码gv| 在人线av无码免费高潮喷水| 99久久精品国产亚洲| 在线观看特色大片免费网站|