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事务。
分享到:
相关推荐
本文将详细介绍如何在Spring中使用JTA事务管理,包括通过集成JOTM(Java Open Transaction Manager)以及引用Tomcat的JTA事务。 ### 1. 通过集成JOTM,直接在Spring中使用JTA事务 #### 1.1. 添加JOTM类库到类路径...
Spring提供了两种主要的方式来实现JTA事务管理:基于XML配置和基于注解的配置。通过这些方式,开发者可以声明式地控制事务的边界,使得代码更简洁、可维护性更强。 在描述中提到的“博文链接:...
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事务管理”揭示了一个集成开发环境,用于构建分布式、事务一致性的Java应用程序。这个组合利用了Spring框架的依赖注入和AOP(面向切面...
1. **配置JTA事务管理器**:首先,需要在应用服务器(如Tomcat、JBoss等)中配置JTA事务管理器。这通常涉及到在服务器配置文件中启用JTA服务。 2. **配置Spring**:在Spring的配置文件中,声明`...
Spring Boot 支持 JTA,可以通过其集成的 `Atomikos` 或 `Bitronix` 事务管理器实现分布式事务。 `MyBatis` 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码...
### Spring + JOTM 多数据源事务管理详解(三):JNDI + Tomcat 在本篇文章中,我们将深入探讨如何利用Spring框架结合JOTM(Java Open Transaction Manager)来实现多数据源下的分布式事务管理。我们将通过具体实例...
接着,为了实现JTA事务管理,我们需要引入一个支持JTA的事务管理器,比如Atomikos或Bitronix。这些事务管理器实现了JTA规范,能够在Spring Boot中与多个数据源协同工作。配置这些事务管理器通常涉及到添加相应的依赖...
本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...
Atomikos是一个提供JTA事务管理的开源库,它提供了一个事务管理器来控制和管理多个数据源的事务边界。在Spring Boot中集成Atomikos可以实现分布式事务控制,让开发者可以专注于业务逻辑而非事务管理。 ### 多数据源...
通过在部署描述符中声明JTA事务管理器,Hibernate会自动参与到JTA事务中,确保了在分布式环境下的数据一致性。例如,在Spring框架中,可以使用`@Transactional`注解,配合JTA实现声明式事务管理。 总的来说,`...
这意味着开发者可以利用Spring的事务管理能力,轻松地在轻量级容器如Tomcat中实现JTA事务。 JOTM(Java Open Transaction Manager)是ObjectWeb组织的一个开源JTA实现,它也是JOnAS(Java Open Application Server...
Spring框架提供了强大的事务管理功能,使得开发者可以方便地在不依赖特定应用服务器(如JBoss)的情况下,实现在轻量级容器(如Tomcat)上的全局(分布式、容器)事务管理。本项目就是针对这一需求,展示了如何在...
2. **配置容器**:如果你的项目运行在支持JTA的服务器上(如Tomcat、JBoss或WebLogic),则服务器通常会提供内置的事务管理器。在某些情况下,你可能需要配置服务器以启用JTA支持。 3. **编程模型**:在代码中,你...
在Spring Boot中,我们可以轻松集成各种数据库连接池,如HikariCP、Tomcat JDBC Pool和Druid。 Druid是一个功能强大的数据库连接池,提供了监控、SQL解析、拦截器等功能。在多数据源配置中,Druid可以作为一个高效...
3. **Spring Transaction** (spring-tx-4.1.6.RELEASE.jar): 事务管理是Spring的核心功能之一,它允许开发者声明性地管理事务,提供编程式和声明式的事务处理,支持多种事务API如JTA、JDBC、Hibernate等。...
它可以管理本地事务(如 JDBC 事务)和全局事务(如 JTA 事务)。Spring 的声明式事务管理允许开发者通过注解或配置文件来声明事务边界,减少了事务管理的代码量。 **Spring Boot** Spring Boot 是基于 Spring ...
- `org.springframework.transaction-3.0.5.RELEASE.jar`:提供了声明式和编程式事务管理,支持多种数据源和JTA事务。 4. **对象/XML映射**: - `org.springframework.oxm-3.0.5.RELEASE.jar`:对象到XML映射模块...
1. **JTA事务管理**: 配置Spring Boot以使用JTA事务管理,需要引入`spring-boot-starter-jta-atomikos`或`spring-boot-starter-jta-bitronix`依赖,并配置相应的事务管理器。 2. **Atomikos和Bitronix**: Atomikos...