- 浏览: 328280 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
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 2575Spring扩展点 1.IOC生成类全名 <!-- ... -
Spring AOP动态代理
2015-01-25 22:23 749package com.test.dynamicproxy; ... -
Spring加载资源并装配对象的过程
2015-01-25 22:20 10251. 定义好Spring的配置文件。 2. 通过Resourc ... -
(转载)Spring Bean 初始化过程
2013-05-10 13:10 1123Spring 的几个接口 1.InitializingBea ... -
(转载)浅谈Spring事务隔离级别
2013-04-15 14:45 951一、Propagation : key属 ... -
AOP+LOG4J日志框架(自定义注解)
2013-04-11 15:00 2697工作中用到日志功能,参考网上一些资料,写了个比较通用的日志框架 ... -
(转载)spring AOP获得session
2013-02-20 17:01 2361由于Spring 的AOP面向切面编程,与Servlet容器没 ... -
Quartz(三)原理及源码分析
2012-10-30 14:56 14008quartz配置文件中可以通过以下两种配置读取方式 org.q ... -
spring-security3(二)源码分析
2012-04-06 17:08 8152利用断点走了一遍spring-security源码的核心部分, ... -
spring-security3(一)配置详解及API扩展(包含ajax返回)
2012-04-06 17:05 3769最近对spring-security3做了一些初步了解,搜集了 ... -
AOP+Ehcache 缓存框架
2011-12-14 16:49 1636AOP+Ehcache 实现缓存功能 设计思路:查询数据,通 ... -
Quartz(二)整合Spring容器中bean及动态调度任务
2010-01-13 10:01 7681Quartz 是开源任务调度框架中的翘首,它提供了强大任务 ... -
Quartz(一)在Spring中设置动态定时任务
2009-05-17 07:09 7750什么是动态定时任务: 是由客户制定生成的,服务端只知道该去执行 ... -
Spring邮件发送(可带附件,模板,群发,异步发送等功能)
2009-05-17 06:27 8680以下是我对spring发送邮件的总结: 分别使用了两种方法:单 ...
相关推荐
NULL 博文链接:https://zhaoshijie.iteye.com/blog/1836707
spring + JTA + atomikos实现分布式事务, 高大上的技术
基于springboot框架实现一些常用的功能
spring + JTA + JOTM实现分布式事务, 高大上的技术
Spring boot+Atomikos+JTA+Hibernate+MySQL实现分布式事务+多数据源,分别向两个不同的数据里面插入数据同时失败和成功,调用接口方式原理一样。
Java分布式开发spring+jta+jotm,可用 Java分布式开发spring+jta+jotm,可用
myeclipse开发,导入即可用,可以参阅http://www.cnblogs.com/shamo89/p/7326718.html
SpringBoot+Atomikos分布式事务及多数据源动态切换,两种demo,两条数据源,是满足事务唯一性的,看清楚是demo
atomikos实现多数据源支持分布式事务管理(spring、tomcat、JTA) 结合spring 和durid进行配置,
例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...
2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的...
本用例基于 Spring Boot + Druid + Mybatis 配置多数据源,并采用 JTA 实现分布式事务。
NULL 博文链接:https://onlyor.iteye.com/blog/1483289
SpringBoot集成Atomikos使用Oracle数据库mybatisSpringBoot集成Atomikos使用Oracle数据库mybatisSpringBoot集成Atomikos使用Oracle数据库mybatisSpringBoot集成Atomikos使用Oracle数据库mybatis
代码下载下来,想要了解更多相关内容可以看http://www.cnblogs.com/shamo89/p/7307961.html
ByteTCC Transaction Manager旨在提供一个兼容JTA的基于TCC机制的分布式事务管理器。兼容JTA,可以很好的与EJB、Spring等容器(本文档下文说明中将以Spring容器为例)进行集成。
springboot+jta+atomikos Springboot+atomikos+jta实现分布式事务统一管理
多数据源 更新 spring jta java jotm
Spring Boot+Druid+Mybatis实现JTA分布式事务
使用springboot+jta+atomikos来配置多数据源下的事务分布管理 里面带有sql语句.直接下载下来,并且运行sql就可以测试运行