[轉]Spring引用Tomcat的 JTA事務

Spring引用Tomcat的 JTA事務
    Tomcat是Servlet容器,但它提供了JNDI的實現,所以用戶能夠象在Java EE應用程序服務器中同樣,在Tomcat中使用JNDI查找JDBC數據源。在事務處理方面,Tomcat自己並不支持 JTA,可是能夠經過集成JOTM達到目的。

    若是你的應用最終部署到一個功能齊備的Java EE應用服務器上,也許你更但願使用Java EE應用服務器的 JTA功能,這樣能夠利用應用服務器自己許多優化措施。下面,咱們讓Tomcat經過JNDI開放JOTM的 JTA的數據源,進而在Spring容器引用這個JNDI數據源,並在此基礎上提供 JTA事務。咱們所使用的環境是:Tomcat 5.5+JOTM 2.3。
    1. 添加所需的JAR文件
    將JOTM如下類包添加到<Tomcat安裝目錄>/common/lib目錄中:
    jotm.jar
    jotm_jrmp_stubs.jar
    jotm_iiop_stubs.jar
    ow_carol.jar
    jta-spec1_0_1.jar
    jts1_0.jar
    objectweb-datasource.jar
    xapool.jar
    howl.jar
    connector-1_5.jar
    同時,還須要添加相應數據庫的JDBC驅動類包,例如 MySQLmysql.jar。

    2. 配置JOTM
    新建一個carol.properties配置文件,放置到<Tomcat安裝目錄>/common/classes目錄下,配置文件內容以下:
    #JNDI調用協議
    carol.protocols=jrmp
    # 本地RMI調用
    carol.jvm.rmi.local.call=true
    # 不使用CAROL的JNDI封裝器
    carol.start.jndi=false
    # 不啓用命名服務器
    carol.start.ns=false
    # 命名工廠類
    carol.jndi.java.naming.factory.url.pkgs=org.apache.naming
    將carol.start.jndi設置爲false,讓JOTM不使用CAROL JNDI wrapper,從而能夠避免類裝載錯誤的發生。

    3. 配置Tomcat環境,配置JNDI的數據源
    在<Tomcat安裝目錄>/conf/context.xml文件中添加如下內容:
<Resource name="jdbc/topicDS" auth="Container"type="javax.sql.DataSource"
①-1:JNDI數據源
factory="org.objectweb.jndi.DataSourceFactory"username="root"password="1234"
driverClassName="com. mysql.jdbc.Driver"url="jdbc: mysql://localhost:3309/topicdb"maxActive="30"maxIdle="30"/>
<Resource name="jdbc/postDS"auth="Container"type="javax.sql.DataSource"
①-2:JNDI數據源factory="org.objectweb.jndi.DataSourceFactory"username="root"password="1234"
driverClassName="com. mysql.jdbc.Driver"url="jdbc: mysql://localhost:3309/postdb"maxActive="30"maxIdle="30"/>
②JOTM JTA事務管理<Transaction factory="org.objectweb.jotm.UserTransactionFactory"jotm.timeout="60"/>
   在Tomcat中配置兩個JNDI數據源,它們分別指向topicdb和postdb數據庫,如①處所示。最後配置JOTM的 JTA事務管理器,該事務管理器自動對兩個JNDI中的數據源應用 JTA事務。
相關文章
相關標籤/搜索