- 浏览: 332950 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
xing0029:
这样配置的话 事物不成功啊 还有什么地方需要注意的么 可以加我 ...
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
mengqingyu:
<div class="quote_title ...
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
liuxiaolu:
jotm的我的没有成功,楼主能否帮助一下
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
aptech406328627:
求解救,没弄好QQ:1053942353
Spring邮件发送(可带附件,模板,群发,异步发送等功能) -
ghpaas:
web可视化自定义表单推荐使用GForms开发平台(http: ...
在线表单设计器设计原理
一.以下介绍Spring中直接集成JOTM提供JTA事务管理、将JOTM集成到Tomcat中。
(经过测试JOTM在批量持久化时有BUG需要修改源码GenericPool类解决)!
参考文章http://mavin.zhou.blog.163.com/blog/static/114522435200971822334475/
通过集成JOTM,直接在Spring中使用JTA事务
JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,它本身也是开源应用程序服务器JOnAS(Java Open Application Server)的一部分,为其提供JTA分布式事务的功能。
Spring 2.0附带的依赖类库中虽然包含jotm类库,但是并不完整,你可以到http://jotm.objectweb.org下载完全版的JOTM。
Spring为JOTM提供了一个org.springframework.transaction.jta.JotmFactoryBean支持类,通过该支持类可以方便地创建JOTM本地实例。
1.将jotm的jar包lib目录下所有jar复制到项目中
2.将jotm的jar包conf目录下carol.properties文件复制到项目类路径下,修改内容为:
3.建立两个数据库,配置两个数据源
二.以下介绍Spring中直接集成Atomikos提供JTA事务管理、将Atomikos集成到Tomcat中。(经过测试推荐此方法)
Atomikos Transactions Essentials现在的版本是3.1.7,可以在http://www.atomikos.com/Main/TransactionsEssentialsDownloadForm 下载,在发布包里的examples文件夹下面有些例子,非常实用,我在使用中参考里面的例子很容易配置成功。1.将Atomikos的jar包dist目录下所有jar复制到项目中
2.建立两个数据库,配置两个数据源。
Atomikos数据源配置方法有三种分别有:SimpleDataSourceBean,AtomikosDataSourceBean,AtomikosNonXADataSourceBean可任选一种
3.事务配置
推荐用Atomikos这个相对比较完善
这个我没试验过,因为我在不用多数据源插入操作时候,都不会使用jta数据源,因为性能不好。只有在必须使用时候才会用。
那你配两个事务吗?多数库插入的时候用jta的,单数据库的时候用另一种事务?这样吗?在一个系统
这个我没试验过,因为我在不用多数据源插入操作时候,都不会使用jta数据源,因为性能不好。只有在必须使用时候才会用。
(经过测试JOTM在批量持久化时有BUG需要修改源码GenericPool类解决)!
参考文章http://mavin.zhou.blog.163.com/blog/static/114522435200971822334475/
通过集成JOTM,直接在Spring中使用JTA事务
JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,它本身也是开源应用程序服务器JOnAS(Java Open Application Server)的一部分,为其提供JTA分布式事务的功能。
Spring 2.0附带的依赖类库中虽然包含jotm类库,但是并不完整,你可以到http://jotm.objectweb.org下载完全版的JOTM。
Spring为JOTM提供了一个org.springframework.transaction.jta.JotmFactoryBean支持类,通过该支持类可以方便地创建JOTM本地实例。
1.将jotm的jar包lib目录下所有jar复制到项目中
2.将jotm的jar包conf目录下carol.properties文件复制到项目类路径下,修改内容为:
# do not use CAROL JNDI wrapper carol.start.jndi=false # do not start a name server carol.start.ns=false # Naming Factory carol.jndi.java.naming.factory.url.pkgs=org.apache.naming
3.建立两个数据库,配置两个数据源
<!-- XAPool配置,内部包含了一个XA数据源,对应相应的数据库 --> <bean id="mysqlJta" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> <!-- 内部XA数据源--> <property name="dataSource"> <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> <property name="transactionManager" ref="jotm"/> <property name="driverName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:MySQL://localhost:3309/test"/> <property name="user" value="root"/> <property name="password" value=""/> </bean> </property> <property name="user" value="root"/> <property name="password" value=""/> </bean> <bean id="oracleJta" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> <property name="dataSource"> <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> <property name="transactionManager" ref="jotm"/> <property name="driverName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="user" value="orcl"/> <property name="password" value=""/> </bean> </property> <property name="user" value="orcl"/> <property name="password" value=""/> </bean>4.事务配置
<!-- JOTM本地实例 --> <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" /> <!-- JTA事务管理器 --> <bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="userTransaction" ref="jotm"/> </bean> <!-- JTA事务传播特性 --> <tx:advice id="txAdviceJta" transaction-manager="txManager"> <tx:attributes> <tx:method name="Jta*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <aop:config> <aop:advisor pointcut="execution(* com.xxxxl.service.impl..*(..))" advice-ref="txAdviceJta" /> </aop:config> <bean id="timerDaoMysql" class="com.xxxxl.TimerDaoImpl" scope="prototype"> <property name="dataSource" ref="mysqlJta"></property> </bean> <bean id="timerDaoOracle" class="com.xxxxl.TimerDaoImpl" scope="prototype"> <property name="dataSource" ref="oracleJta"></property> </bean>
二.以下介绍Spring中直接集成Atomikos提供JTA事务管理、将Atomikos集成到Tomcat中。(经过测试推荐此方法)
Atomikos Transactions Essentials现在的版本是3.1.7,可以在http://www.atomikos.com/Main/TransactionsEssentialsDownloadForm 下载,在发布包里的examples文件夹下面有些例子,非常实用,我在使用中参考里面的例子很容易配置成功。1.将Atomikos的jar包dist目录下所有jar复制到项目中
2.建立两个数据库,配置两个数据源。
Atomikos数据源配置方法有三种分别有:SimpleDataSourceBean,AtomikosDataSourceBean,AtomikosNonXADataSourceBean可任选一种
<!-- Simple表示基础数据库连接配置 --> <bean id="oracleJta" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close"> <property name="uniqueResourceName"> <value>OracleXADataSource</value> <!--任意命名,但必须唯一--> </property> <property name="xaDataSourceClassName"> <value>oracle.jdbc.xa.client.OracleXADataSource</value> </property> <property name="xaDataSourceProperties"> <value>URL=jdbc:oracle:thin:@localhost:1521:orcl;user=orcl;password=</value> </property> <property name="exclusiveConnectionMode"> <value>true</value> </property> <property name="connectionPoolSize"> <value>3</value> </property> <property name="validatingQuery"> <value>SELECT 1</value> </property> </bean> <!-- Atomikos表示必须要用到XA数据库驱动类,可设置连接池(经过测试推荐此方法) --> <bean id="oracleJta" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close" lazy-init="true"> <property name="uniqueResourceName"> <value>OracleXADataSource</value> </property> <property name="xaDataSourceClassName"> <value>oracle.jdbc.xa.client.OracleXADataSource</value> </property> <property name="xaProperties"> <props> <prop key="URL">jdbc:oracle:thin:@localhost:1521:orcl</prop> <prop key="user">orcl</prop> <prop key="password"></prop> </props> </property> <property name="poolSize"><value>1</value></property> <property name="maxPoolSize"><value>30</value></property> <property name="testQuery" value="SELECT 1 from dual"/> <!--解决偶尔失去连接的bug--> </bean> <!-- AtomikosNon表示必须要用到普通数据库驱动类,可设置连接池 --> <bean id="oracleJta" class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean"> <property name="uniqueResourceName"><value>OracleXADataSource</value></property> <property name="user"><value>orcl</value></property> <property name="password"><value></value></property> <property name="url"><value>jdbc:oracle:thin:@192.168.1.217:1521:orcl</value></property> <property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property> <property name="poolSize"><value>1</value></property> <property name="borrowConnectionTimeout"><value>60</value></property> </bean> 另外一个数据库在这就不在写了,设置同上只是mysql的驱动类名为:xaDataSourceClassName:com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
3.事务配置
<!-- Atomikos事务方法 --> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <property name="forceShutdown"> <value>true</value> </property> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="240" /> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager"> <ref bean="atomikosTransactionManager" /> </property> <property name="userTransaction"> <ref bean="atomikosUserTransaction" /> </property> </bean> 接下来的代码和上例类同就不再写。
评论
9 楼
xing0029
2015-12-29
这样配置的话 事物不成功啊 还有什么地方需要注意的么 可以加我Q么669032669
8 楼
mengqingyu
2015-01-17
liuxiaolu 写道
jotm的我的没有成功,楼主能否帮助一下
推荐用Atomikos这个相对比较完善
7 楼
liuxiaolu
2015-01-13
jotm的我的没有成功,楼主能否帮助一下
6 楼
mengqingyu
2011-04-20
分开用。。
5 楼
zsj614
2011-04-19
mengqingyu 写道
wad12302 写道
为什么
<tx:method name="*" read-only="true"/>
有这个之后‘
我使用 doXXX的方式一样能够 insert成功“”
<tx:method name="*" read-only="true"/>
有这个之后‘
我使用 doXXX的方式一样能够 insert成功“”
这个我没试验过,因为我在不用多数据源插入操作时候,都不会使用jta数据源,因为性能不好。只有在必须使用时候才会用。
那你配两个事务吗?多数库插入的时候用jta的,单数据库的时候用另一种事务?这样吗?在一个系统
4 楼
mengqingyu
2011-02-26
wad12302 写道
为什么
<tx:method name="*" read-only="true"/>
有这个之后‘
我使用 doXXX的方式一样能够 insert成功“”
<tx:method name="*" read-only="true"/>
有这个之后‘
我使用 doXXX的方式一样能够 insert成功“”
这个我没试验过,因为我在不用多数据源插入操作时候,都不会使用jta数据源,因为性能不好。只有在必须使用时候才会用。
3 楼
wad12302
2011-02-26
为什么
<tx:method name="*" read-only="true"/>
有这个之后‘
我使用 doXXX的方式一样能够 insert成功“”
<tx:method name="*" read-only="true"/>
有这个之后‘
我使用 doXXX的方式一样能够 insert成功“”
2 楼
mengqingyu
2010-07-15
可以回滚!
1 楼
Jhonney
2010-07-12
jotm那个配置,你能成功进行事务处理,能够回滚??
发表评论
-
Spring扩展点
2015-08-17 11:14 2624Spring扩展点 1.IOC生成类全名 <!-- ... -
Spring AOP动态代理
2015-01-25 22:23 789package com.test.dynamicproxy; ... -
Spring加载资源并装配对象的过程
2015-01-25 22:20 10581. 定义好Spring的配置文件。 2. 通过Resourc ... -
(转载)Spring Bean 初始化过程
2013-05-10 13:10 1154Spring 的几个接口 1.InitializingBea ... -
(转载)浅谈Spring事务隔离级别
2013-04-15 14:45 978一、Propagation : key属 ... -
AOP+LOG4J日志框架(自定义注解)
2013-04-11 15:00 2748工作中用到日志功能,参考网上一些资料,写了个比较通用的日志框架 ... -
(转载)spring AOP获得session
2013-02-20 17:01 2420由于Spring 的AOP面向切面编程,与Servlet容器没 ... -
Quartz(三)原理及源码分析
2012-10-30 14:56 14047quartz配置文件中可以通过以下两种配置读取方式 org.q ... -
spring-security3(二)源码分析
2012-04-06 17:08 8188利用断点走了一遍spring-security源码的核心部分, ... -
spring-security3(一)配置详解及API扩展(包含ajax返回)
2012-04-06 17:05 3816最近对spring-security3做了一些初步了解,搜集了 ... -
AOP+Ehcache 缓存框架
2011-12-14 16:49 1678AOP+Ehcache 实现缓存功能 设计思路:查询数据,通 ... -
Quartz(二)整合Spring容器中bean及动态调度任务
2010-01-13 10:01 7730Quartz 是开源任务调度框架中的翘首,它提供了强大任务 ... -
Quartz(一)在Spring中设置动态定时任务
2009-05-17 07:09 7806什么是动态定时任务: 是由客户制定生成的,服务端只知道该去执行 ... -
Spring邮件发送(可带附件,模板,群发,异步发送等功能)
2009-05-17 06:27 8731以下是我对spring发送邮件的总结: 分别使用了两种方法:单 ...
相关推荐
本文将深入探讨如何在Tomcat应用服务器上集成JTA,并使用JOTM(Java Open Transaction Manager)或Atomikos作为事务管理器来实现分布式事务。 首先,我们需要理解JTA的核心概念。JTA是Java EE平台的一部分,提供了...
Atomikos 是一款开源的分布式事务处理库,它为Java应用程序提供了支持JTA(Java Transaction API)的事务管理服务。JTA是Java平台标准中定义的用于处理分布式事务的API,允许开发者在一个全局事务中处理多个数据库...
本文将深入探讨如何在SpringBoot框架中集成JTA(Java Transaction API)和Atomikos来实现分布式事务管理。这是一项关键的技术,特别是在微服务架构中,它保证了跨服务操作的原子性。 首先,`pom.xml`是Maven项目的...
8. **集成与配置**: 集成Atomikos到Spring Boot项目中,需要在配置文件中设置相关的事务管理属性,比如数据源、事务超时时间等,并且需要在代码中适当地声明和管理事务边界。 9. **测试与监控**: 在分布式事务环境...
分布式事务是现代企业级应用中不可或缺的技术,尤其是在大数据和微服务架构中,保证数据的一致性和完整性至关重要。Spring 框架提供了强大的事务管理能力,而JTA(Java Transaction API)是Java平台上的标准分布式...
这就是Atomikos的角色,它实现了JTA,允许应用程序在分布式环境中进行跨系统的事务处理。 **配置Spring与Atomikos** 1. **配置Atomikos**: 首先,我们需要在项目中引入Atomikos的依赖。在`pom.xml`中添加相应的...
Spring Boot集成Atomikos进行分布式事务管理,主要步骤包括: 1. 引入依赖:在项目中添加Atomikos的依赖,确保项目能够访问其提供的JTA服务。 2. 配置Atomikos:配置文件中设置Atomikos的相关参数,如事务超时时间、...
本文将详细讲解如何利用Spring Boot、Atomikos、JPA(Java Persistence API)以及MySQL来实现JTA(Java Transaction API)分布式事务。 首先,Spring Boot是一个轻量级的框架,它简化了基于Spring的应用程序开发...
分布式事务是现代企业级应用中不可或缺的一部分,尤其是在大数据和微服务架构中,它确保了在多个数据库或资源管理系统中的数据一致性。本教程将深入探讨如何使用Spring框架、Java Transaction API (JTA) 和 Java ...
在IT行业中,分布式事务是一个重要的概念,特别是在构建大型、高可用性的系统时。Atomikos是一个开源的事务...通过上述步骤,开发者可以将Atomikos与Spring Boot的事务管理机制紧密结合,构建出高可用的分布式应用。
Atomikos是Java环境下的一款强大的事务处理工具,支持JTA(Java Transaction API),能处理复杂的分布式事务需求。在Spring中整合Atomikos,可以实现全局的事务管理,即使跨越多个数据库,也能确保ACID(原子性、...
`Atomikos` 是一个开源的JTA实现,它提供了对分布式事务的支持,可以与Spring集成,处理多数据源的事务管理。 在Spring中配置Druid和Hibernate结合Atomikos进行分布式事务管理的步骤如下: 1. **引入依赖**:在...
4. **Atomikos**:Atomikos是一个符合JTA(Java Transaction API)标准的事务管理器,支持XA分布式事务协议。在分布式环境中,它能确保跨多个数据源的操作要么全部成功,要么全部回滚,实现ACID(原子性、一致性、...
通过上述配置,SpringBoot应用就能在Atomikos的帮助下,对多数据库进行分布式事务的统一管理。在处理事务时,Atomikos会跟踪事务的边界,确保所有操作要么全部成功,要么全部回滚,从而保证了数据的一致性。 总的来...
在这个DEMO中,Tomcat承载了Spring和MyBatis的应用,并且通过Atomikos的JTA支持,能够在多线程环境下处理分布式事务。 压缩包中的"atomikosJtaTx_Transform"可能包含以下内容:配置文件(如atomikos.properties)、...
在IT行业中,分布式事务是一个重要的概念,特别是在大型系统和微服务架构中,它涉及到多个数据库或数据源的协调操作,确保数据的一致性和完整性。Spring框架作为Java领域中广泛使用的应用开发框架,提供了多种处理...
Spring框架提供了多种实现分布式事务管理的方式,其中一种是通过集成第三方工具如Atomikos来实现。Atomikos是一个开源的事务处理服务,支持JTA(Java Transaction API),能很好地处理分布式环境中的ACID(原子性、...
"Java分布式开发spring+jta+jotm"的主题涵盖了Spring框架在分布式系统中的应用,特别是如何利用JTA和JOTM来处理跨资源的分布式事务。理解和掌握这些技术对于构建可扩展、健壮的Java应用至关重要。通过深入学习和实践...
本项目“spring+jotm+ibatis+mysql实现JTA分布式事务”旨在利用这些技术来确保在分布式环境中的数据一致性。下面将详细介绍这个项目所涉及的知识点。 首先,Spring框架是Java开发中最常用的应用框架之一,它提供了...
Atomikos是一个开源的事务处理系统,专门设计用于在Java应用程序中实现分布式事务管理。它提供了JTA(Java Transaction API)的实现,使得开发者能够在不同的数据源之间进行复杂的事务操作,确保数据的一致性和完整...