`
beyond429
  • 浏览: 96046 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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驱动类包,例如MySQL的mysql.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事务。
分享到:
评论
2 楼 shingo7 2011-02-23  
jotm哪来的2.3版
1 楼 blogaaa 2010-07-05  
这样配置完后,事务不能正常回滚,在同一个action中插入记录到两个库里面,一个报错,另外一个不回回滚。

相关推荐

    在Spring中使用JTA事务管理

    本文将详细介绍如何在Spring中使用JTA事务管理,包括通过集成JOTM(Java Open Transaction Manager)以及引用Tomcat的JTA事务。 ### 1. 通过集成JOTM,直接在Spring中使用JTA事务 #### 1.1. 添加JOTM类库到类路径...

    spring jta

    Spring提供了两种主要的方式来实现JTA事务管理:基于XML配置和基于注解的配置。通过这些方式,开发者可以声明式地控制事务的边界,使得代码更简洁、可维护性更强。 在描述中提到的“博文链接:...

    spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)

    3. **Spring配置**:在Spring的配置文件中,使用`jee:jta-data-source`或`jee:resource-ref`元素来引用之前创建的JNDI数据源,并配置`PlatformTransactionManager`为`org.objectweb.jotm.CurrentJOTM`。 **Atomikos...

    Spring3.1+Hibernate4.1+Atomikos3.9+MySql5.1+Tomcat5/6/7实现JTA事务管理

    标题中的“Spring3.1+Hibernate4.1+Atomikos3.9+MySql5.1+Tomcat5/6/7实现JTA事务管理”揭示了一个集成开发环境,用于构建分布式、事务一致性的Java应用程序。这个组合利用了Spring框架的依赖注入和AOP(面向切面...

    jta hibernate spring 集成 代码和说明

    1. **配置JTA事务管理器**:首先,需要在应用服务器(如Tomcat、JBoss等)中配置JTA事务管理器。这通常涉及到在服务器配置文件中启用JTA服务。 2. **配置Spring**:在Spring的配置文件中,声明`...

    maven springboot jta mybatis 分布式事物

    Spring Boot 支持 JTA,可以通过其集成的 `Atomikos` 或 `Bitronix` 事务管理器实现分布式事务。 `MyBatis` 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码...

    spring+jotm 多数据源事务管理(三)JNDI+Tomcat

    ### Spring + JOTM 多数据源事务管理详解(三):JNDI + Tomcat 在本篇文章中,我们将深入探讨如何利用Spring框架结合JOTM(Java Open Transaction Manager)来实现多数据源下的分布式事务管理。我们将通过具体实例...

    spring boot下学习mybatis+mysql使用jta对多数据源事务进行整合.zip

    接着,为了实现JTA事务管理,我们需要引入一个支持JTA的事务管理器,比如Atomikos或Bitronix。这些事务管理器实现了JTA规范,能够在Spring Boot中与多个数据源协同工作。配置这些事务管理器通常涉及到添加相应的依赖...

    springboot+jta+atomikos

    本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...

    springboot+mybatis+jta+atomikos解决多数据源事务问题.pdf

    Atomikos是一个提供JTA事务管理的开源库,它提供了一个事务管理器来控制和管理多个数据源的事务边界。在Spring Boot中集成Atomikos可以实现分布式事务控制,让开发者可以专注于业务逻辑而非事务管理。 ### 多数据源...

    geronimo-jta_1.1_spec-1.1.1.jar

    通过在部署描述符中声明JTA事务管理器,Hibernate会自动参与到JTA事务中,确保了在分布式环境下的数据一致性。例如,在Spring框架中,可以使用`@Transactional`注解,配合JTA实现声明式事务管理。 总的来说,`...

    Spring框架技术

    这意味着开发者可以利用Spring的事务管理能力,轻松地在轻量级容器如Tomcat中实现JTA事务。 JOTM(Java Open Transaction Manager)是ObjectWeb组织的一个开源JTA实现,它也是JOnAS(Java Open Application Server...

    Spring中的全局(分布式、容器)事务的项目,可以脱离JBOSS的存在

    Spring框架提供了强大的事务管理功能,使得开发者可以方便地在不依赖特定应用服务器(如JBoss)的情况下,实现在轻量级容器(如Tomcat)上的全局(分布式、容器)事务管理。本项目就是针对这一需求,展示了如何在...

    jta maven包

    2. **配置容器**:如果你的项目运行在支持JTA的服务器上(如Tomcat、JBoss或WebLogic),则服务器通常会提供内置的事务管理器。在某些情况下,你可能需要配置服务器以启用JTA支持。 3. **编程模型**:在代码中,你...

    Spring Boot + Druid + Mybatis + Atomikos 配置多数据源 并支持分布式事务

    在Spring Boot中,我们可以轻松集成各种数据库连接池,如HikariCP、Tomcat JDBC Pool和Druid。 Druid是一个功能强大的数据库连接池,提供了监控、SQL解析、拦截器等功能。在多数据源配置中,Druid可以作为一个高效...

    spring 4.1 jar包

    3. **Spring Transaction** (spring-tx-4.1.6.RELEASE.jar): 事务管理是Spring的核心功能之一,它允许开发者声明性地管理事务,提供编程式和声明式的事务处理,支持多种事务API如JTA、JDBC、Hibernate等。...

    Spring自整理的笔记.7z

    它可以管理本地事务(如 JDBC 事务)和全局事务(如 JTA 事务)。Spring 的声明式事务管理允许开发者通过注解或配置文件来声明事务边界,减少了事务管理的代码量。 **Spring Boot** Spring Boot 是基于 Spring ...

    spring mvc 3.0.5 jar包

    - `org.springframework.transaction-3.0.5.RELEASE.jar`:提供了声明式和编程式事务管理,支持多种数据源和JTA事务。 4. **对象/XML映射**: - `org.springframework.oxm-3.0.5.RELEASE.jar`:对象到XML映射模块...

    03_JPA详解_搭建JPA开发环境和全局事务介绍.zip

    1. **JTA事务管理**: 配置Spring Boot以使用JTA事务管理,需要引入`spring-boot-starter-jta-atomikos`或`spring-boot-starter-jta-bitronix`依赖,并配置相应的事务管理器。 2. **Atomikos和Bitronix**: Atomikos...

Global site tag (gtag.js) - Google Analytics