`
chenjiepengc
  • 浏览: 2096 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

Spring+iBatis+Atomikos实现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内容如下:

  view source <http://www.cnblogs.com/warison2008/archive/2010/10/15/1852338.html>

  print <http://www.cnblogs.com/warison2008/archive/2010/10/15/1852338.html><http://www.cnblogs.com/warison2008/archive/2010/10/15/1852338.html>

  1com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory

  2 com.atomikos.icatch.console_file_name = tm.out

  3com.atomikos.icatch.log_base_name = tmlog

  4com.atomikos.icatch.tm_unique_name = com.atomikos.spring.jdbc.tm

  5com.atomikos.icatch.console_log_level = INFO

  spring配置文件

  代码

  <?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>
分享到:
评论

相关推荐

    ansys maxwell

    ansys maxwell

    matlab基于不确定性可达性优化的自主鲁棒操作.zip

    matlab基于不确定性可达性优化的自主鲁棒操作.zip

    pytest-2.8.0.zip

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    信息安全课程实验C++实现DES等算法源代码

    信息安全课程实验C++实现DES等算法源代码

    基于知识图谱的医疗诊断知识问答系统python源码+项目说明.zip

    环境 python >= 3.6 pyahocorasick==1.4.2 requests==2.25.1 gevent==1.4.0 jieba==0.42.1 six==1.15.0 gensim==3.8.3 matplotlib==3.1.3 Flask==1.1.1 numpy==1.16.0 bert4keras==0.9.1 tensorflow==1.14.0 Keras==2.3.1 py2neo==2020.1.1 tqdm==4.42.1 pandas==1.0.1 termcolor==1.1.0 itchat==1.3.10 ahocorasick==0.9 flask_compress==1.9.0 flask_cors==3.0.10 flask_json==0.3.4 GPUtil==1.4.0 pyzmq==22.0.3 scikit_learn==0.24.1 效果展示 为能最简化使用该系统,不需要繁杂的部署各种七七八八的东西,当前版本使用的itchat将问答功能集成到微信做演示,这需要你的微信能登入网页微信才能使用itchat;另外对话上下文并没

    一个高品质的音乐共享和流媒体轻量音乐程序网站在线音乐源码

    一个高品质的音乐共享和流媒体轻量音乐程序网站在线音乐源码,是创建您自己的音乐流媒体网站的最佳方式! 最新版本: 添加插件系统,现在开发人员可以为程序制作插件并在更新后保留您的自定义设置。 固定的2 个以上的小错误。 安装所需:nginx/apache,mysql5.6+,php7+ 搭建说明:看源码内详细说明

    实现的金融风控贷款违约预测python源码.zip

    实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip实现的金融风控贷款违约预测python源码.zip

    麦肯锡—xx数码公司发展战略咨询报告.ppt

    麦肯锡—xx数码公司发展战略咨询报告.ppt

    FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

    FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写

    基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip

    基于sklearn实现线性回归模型对波士顿房价进行预测源码.zip

    pytest-3.5.0.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    pytest-4.5.0.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于相干衍射成像模拟的matlab源码.zip

    基于相干衍射成像模拟的matlab源码.zip

    基于CS的远程监控系统软件项目(免费提供全套java开源项目源码+论文)

    项目介绍 背景 在当今的数字化时代,远程监控系统已经成为企业和个人必不可少的工具。随着物联网(IoT)技术的发展,监控系统的需求不断增加,不仅仅局限于视频监控,还包括数据监控、设备状态监控等。基于CS(Client-Server)架构的远程监控系统应运而生,旨在提供高效、实时、可靠的监控服务,帮助用户实现远程管理和控制。 目的 基于CS的远程监控系统软件项目旨在为用户提供一个综合性的监控平台,通过该平台,用户可以实时监控各类设备和数据,实现远程控制和管理,提高工作效率,降低运营成本。同时,该系统还可以用于安全防护、生产过程监控等多种场景,具有广泛的应用前景。 模块说明 前端模块 前端模块是用户与系统交互的界面,负责展示监控数据和接收用户指令。前端模块的主要功能包括: 用户登录与认证:通过安全的登录机制,确保只有授权用户才能访问系统。 实时数据展示:以图表、仪表盘等形式展示实时监控数据,包括视频流、传感器数据等。 报警通知:当监控系统检测到异常情况时,前端模块会通过弹窗、声音等方式通知用户。 远程控制:用户可以通过前端界面对设备进行远程控制,例如开关设备、调整参数等。

    网课专注度监测预警系统基于yolov5目标检测的网课专注度检测系统源码+模型+pyqt5界面.zip

    网课专注度监测预警系统基于yolov5目标检测的网课专注度检测系统源码+模型+pyqt5界面.zip

    matlab基于标签歧义的深度标签分布学习.zip

    matlab基于标签歧义的深度标签分布学习.zip

    九型人格测试题.144题dr.xls

    九型人格测试题.144题dr.xls

    麦肯锡—xx科技业务流程改造报告.ppt

    麦肯锡—xx科技业务流程改造报告.ppt

    pytest-8.2.0-py3-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    1-8.py

    1-8

Global site tag (gtag.js) - Google Analytics