`

Spring+iBatis+Atomikos实现JTA事务

    博客分类:
  • JTA
阅读更多

Atomikos分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTransactions。
TransactionEssentials的主要特征:JTA/XA 事务管理 —— 提供事务管理和连接池不需要应用服务器 —— TransactionEssentials可以在任何Java EE应用服务器中运行,也就是不依赖于任何应用服务器开源 —— TransactionEssentials是遵守Apache版本2许可的开源软件专注于JDBC/JMS —— 支持所有XA资源,但是资源池和消息监听是专供JDBC和JMS的与Spring 和 Hibernate 集成 —— 提供了描述如何与Spring和Hibernate集成的文档
一、环境

spring 2

ibatis2

AtomikosTransactionsEssentials-3.7.0 下载地址:http://www.atomikos.com/Main/InstallingTransactionsEssentials

MySQL-5.1 :数据库引擎为InnoDB,只有这样才能支持事务 

JDK1.6

Oracle10


二 jar包

 Atomikos jar必须包 transactions-jdbc.jar

transactions-jta.jar

transactions.jar

atomikos-util.jar  

transactions-api.jar 

ibatis,spring

只要符合二者集成jar组合即可,无额外jar

三、配置

Oracle用户授权:(视情况而定,如果程序出现如下异常则需要加上1672 [main] WARN atomikos - ERROR IN RECOVERY com.atomikos.datasource.ResourceException: Error in recovery)

grant select on sys.dba_pending_transactions to orcl;

grant select on sys.pending_trans$ to orcl;

grant select on sys.dba_2pc_pending to orcl;

grant execute on sys.dbms_system to orcl;


jta.properties 配置文件,即src/ jta.properties内容如下:

 

1 com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory
2  com.atomikos.icatch.console_file_name = tm.out 
3 com.atomikos.icatch.log_base_name = tmlog 
4 com.atomikos.icatch.tm_unique_name = com.atomikos.spring.jdbc.tm 
5 com.atomikos.icatch.console_log_level = INFO

 

 


spring配置文件

代码
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd "> <!-- 事物管理器 --> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <description>UserTransactionImp</description> <property name="transactionTimeout" value="300"/> </bean> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <description>UserTransactionManager</description> <property name="forceShutdown"> <value>true</value> </property> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <description>JtaTransactionManager</description> <property name="transactionManager"> <ref bean="atomikosTransactionManager" /> </property> <property name="userTransaction"> <ref bean="atomikosUserTransaction" /> </property> <property name="allowCustomIsolationLevels" value="true"/> <!—必须设置,否则程序出现异常 JtaTransactionManager does not support custom isolation levels by default --> <!—oracle数据源定义 --> </bean> <bean id="oracleDS" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close"> <description>oracle xa datasource</description> <property name="uniqueResourceName"> <value>oracle_ds</value> </property> <property name="xaDataSourceClassName"> <value>oracle.jdbc.xa.client.OracleXADataSource</value> </property> <property name="xaProperties"> <props> <prop key="user">orcl</prop> <prop key="password">123</prop> <prop key="URL">jdbc:oracle:thin:@ localhost:1521:orcl</prop> </props> </property> <property name="testQuery"> <value>select 1 from dual</value> <!—尽力加上,不然会出现告警 --> </property> </bean> <!— mysql数据源定义 --> <bean id="dataSourceoracle2" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close"> <description>mysql xa datasource</description> <property name="uniqueResourceName"> <value>mysql_ds</value> </property> <property name="xaDataSourceClassName"> <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value> </property> <property name="xaProperties"> <props> <prop key="user">root</prop> <prop key="password">123</prop> <prop key="URL">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8</prop> </props> </property> <property name="testQuery"> <value>select 1</value><!—尽力加上,不然会出现告警 --> </property> </bean> <!-- ibatis配置源 --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="classpath:sql-moredata-config.xml" /> <property name="dataSource" ref="oracleDS" /> </bean> <!-- ibatis配置源2 --> <bean id="sqlMapClient2" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="classpath:sql-moredata2-config.xml" /> <property name="dataSource" ref="dataSourceoracle2" /> </bean> <bean id="testDaoR" class="com.test.moredata.TestDAOImpR"> <property name="sqlMapClient" ref="sqlMapClient"></property> </bean> <bean id="testDao" class="com.test.moredata.TestDAOImp"> <property name="sqlMapClient" ref="sqlMapClient2"></property> </bean> <bean id="testService" class="com.test.moredata.TestService"> <property name="testDao" ref="testDao"></property> <property name="testDaoR" ref="testDaoR"></property> </bean> <!— aop配置 --> <tx:advice id="transactionManagerAdivice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*" isolation="READ_COMMITTED" propagation="REQUIRED" rollback-for="java.lang.RuntionException" /> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* com.test.moredata.TestService.*(..))" id="tsServicePc" /> <aop:advisor advice-ref="transactionManagerAdivice" pointcut-ref="tsServicePc" /> </aop:config>
分享到:
评论

相关推荐

    spring+ibatis事务的配置

    很好的spring+ibatis事务的配置文档.

    Spring+iBatis+JOTM实现JTA事务

    本篇文章将详细讲解如何利用Spring+iBatis+JOTM来实现JTA事务。 首先,我们需要理解JTA的核心概念。JTA定义了一组接口和规范,允许应用程序在不同的事务边界之间进行协调,确保原子性和持久性。JOTM作为JTA的一个...

    spring+jotm+ibatis+mysql实现JTA分布式事务

    本项目“spring+jotm+ibatis+mysql实现JTA分布式事务”旨在利用这些技术来确保在分布式环境中的数据一致性。下面将详细介绍这个项目所涉及的知识点。 首先,Spring框架是Java开发中最常用的应用框架之一,它提供了...

    struts2+spring+ibatis+mysql

    "Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts2+spring+Ibatis框架包

    iBatis与Spring的结合,可以让Spring管理SqlSession,提供事务控制,并且可以利用Spring的DAO支持,简化开发过程。 在"ssi_jar"这个压缩包中,可能包含了这三个框架的库文件,例如struts2相关的jar包(如struts2-...

    struts+spring+ibatis做的一个增删改查例子

    Struts、Spring 和 iBATIS 是Java开发领域中三大经典的开源框架,它们组合起来可以构建出高效、可维护的企业级Web应用。这个例子是利用这三个框架实现了一个基础的增删改查(CRUD)功能,涵盖了数据库操作、业务逻辑...

    maven搭建SpringMVC+spring+ibatis

    Ibatis与Spring框架集成后,可以使用Spring的DI功能管理数据库连接,同时通过MyBatis-Spring提供的MapperScannerConfigurer自动扫描并注册Mapper接口,实现DAO层的便捷开发。 在SpringMVC+Spring+Ibatis的架构中,...

    spring+struts2+ibatis简单登录实例--特别适新人学习

    一个简单的spring+struts+ibatis整合的实例,实现了用户登录,用户登录成功则显示欢迎信息,失败则显示用户名或密码错误,该实例非常简单基础,特别适合新人学习,工程包含了必要的资源包,部署到服务器中及可运行,...

    JSF+Spring+Ibatis示例

    JSF+Spring+Ibatis示例,对学习JAVA企业应用开发有巨大的帮助!

    struts2 + spring + ibatis 实例

    struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例

    spring+struts2+ibatis整合的jar包

    总的来说,Spring、Struts2和iBatis的整合为Java Web开发提供了一个强大、灵活的解决方案,让开发者能够更专注于业务逻辑,而不是框架的底层实现。通过合理的配置和使用这个jar包,开发者可以快速构建出稳定、高性能...

    spring+ibatis+oracle分页缓存源码

    总的来说,"spring+ibatis+oracle分页缓存源码"项目展示了如何在Spring管理的环境中,利用iBatis和Oracle数据库实现高效的数据分页和缓存策略。通过理解和实践这些技术,开发者可以构建出更加健壮、响应快速的Web...

    webwork+spring+ibatis很适合初学者的实例

    Spring还包含事务管理、数据访问集成(如JDBC、Hibernate、iBATIS)、服务层支持(如DAO和Service接口)、以及各种工具和模块,如Spring Boot、Spring Cloud等,极大地提高了开发效率和应用的可维护性。 **iBATIS**...

    maven3+struts2+spring+ibatis

    maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...

    struts+spring+ibatis的Demo

    Struts、Spring和iBatis是Java开发领域中三大经典的开源框架,它们分别负责MVC模式中的动作控制、依赖注入以及数据库操作。这个"struts+spring+ibatis的Demo"压缩包文件提供了这三个框架集成使用的示例代码,旨在...

    Spring+ibatis 保留ibatis事务的配置

    这种配置方式使得ibatis能够在不依赖Spring事务管理的情况下独立工作,从而实现了对ibatis事务的保留。 #### 四、实现自定义控制回滚 当保留ibatis事务后,开发者可以在业务逻辑中更自由地控制事务的提交和回滚。...

    struts2+spring+ibatis+oracle+分页搜索+上传附件实例

    综上所述,这个实例展示了如何整合Struts2、Spring、iBatis和Oracle来构建一个完整的Web应用,实现了动态分页搜索和附件上传功能。这种架构具有良好的可扩展性和可维护性,适用于各种中大型企业级项目。开发者可以...

    Struts+Spring+Ibatis环境配置(一) - zwjxf的专栏 - 博

    Struts+Spring+Ibatis环境配置(一) - zwjxf的专栏 - 博

Global site tag (gtag.js) - Google Analytics