日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring JTA应用JOTM Atomikos III Atomikos

發布時間:2025/4/14 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring JTA应用JOTM Atomikos III Atomikos 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面簡單介紹了JOTM如何在Spring中配置,并如何使用它的JTA事務,本節將介紹Atomikos如何與Spring集成,并使用它的JTA事務。?

Atomikos,是一個基于Java的開源事務管理器,提供了事務管理和連接池,不需要應用服務器支持,支持JDBC和JMS事務,能提供對Spring,Hibernate的集成,有興趣多了解的可以直接參考說明文當,有詳細的介紹和使用說明。?

Atomikos可以到http://www.atomikos.com/products.html#ate下載,最新版本是3.2.0?

首先,仍然是一個相關的配置文件,用來設置相關的環境,打開解壓縮后Atomikos根目錄,拷貝jta.properties到classpath中,并修改為如下內容?
jta.properties?

Java代碼??
  • com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory??
  • com.atomikos.icatch.console_file_name?=?tm.out??
  • com.atomikos.icatch.log_base_name?=?tmlog??
  • com.atomikos.icatch.tm_unique_name?=?com.atomikos.spring.jdbc.tm??
  • com.atomikos.icatch.console_log_level?=?INFO???


  • 隨后,是Spring上下文配置,建立一個名為ApplicationContext-atomikos.xml的Spring上下文?

    ApplicationContext-atomikos.xml?

    Java代碼??
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <beans?xmlns="http://www.springframework.org/schema/beans"??
  • ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  • ????xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">??
  • ????<!--?XA?Datasource?-->??
  • ????<bean?id="datasource1"?class="com.atomikos.jdbc.SimpleDataSourceBean"?init-method="init"?destroy-method="close">?????
  • ????????<property?name="uniqueResourceName">?????
  • ????????????<value>mysql/main</value>?????
  • ????????</property>?????
  • ????????<property?name="xaDataSourceClassName">?????
  • ????????????<value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>?????
  • ????????</property>?????
  • ????????<property?name="xaDataSourceProperties">?????
  • ????????????<value>URL=jdbc:mysql://localhost:3306/test;user=root;password=admin</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>??
  • ??????
  • ????<bean?id="datasource2"?class="com.atomikos.jdbc.SimpleDataSourceBean"?init-method="init"?destroy-method="close">?????
  • ????????<property?name="uniqueResourceName">?????
  • ????????????<value>mysql/news</value>??
  • ????????</property>?????
  • ????????<property?name="xaDataSourceClassName">?????
  • ????????????<value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>?????
  • ????????</property>??
  • ????????<property?name="xaDataSourceProperties">?????
  • ????????????<value>URL=jdbc:mysql://localhost:3306/test2;user=root;password=admin</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>??
  • ??????
  • ????<bean?id="template1"?class="org.springframework.jdbc.core.JdbcTemplate">??
  • ????????<property?name="dataSource"?ref="datasource1"?/>??
  • ????</bean>??
  • ??????
  • ????<bean?id="template2"?class="org.springframework.jdbc.core.JdbcTemplate">??
  • ????????<property?name="dataSource"?ref="datasource2"?/>??
  • ????</bean>??
  • ??????????
  • ????<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="300"/>???
  • ????</bean>??
  • ??
  • ????<bean?id="springTransactionManager"?class="org.springframework.transaction.jta.JtaTransactionManager">??
  • ????????<property?name="transactionManager"><ref?bean="atomikosTransactionManager"??/></property>??
  • ????????<property?name="userTransaction"><ref?bean="atomikosUserTransaction"??/></property>??
  • ????</bean>??
  • ??????
  • ????<bean?id="dao1"?class="com.xa.dao.UserDao1">??
  • ????????<property?name="jdbcTemplate">??
  • ????????????<ref?bean="template1"></ref>??
  • ????????</property>??
  • ????</bean>??
  • ??????
  • ????<bean?id="dao2"?class="com.xa.dao.UserDao2">??
  • ????????<property?name="jdbcTemplate">??
  • ????????????<ref?bean="template2"></ref>??
  • ????????</property>??
  • ????</bean>??
  • ????<!--?-->??
  • ????<bean?id="userServiceTarget"?class="com.xa.service.UserServiceImpl">??
  • ????????<property?name="dao1"?ref="dao1"/>??
  • ????????<property?name="dao2"?ref="dao2"/>??
  • ????</bean>??
  • ??????
  • ????<bean?id="userTest"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">??????
  • ????????<property?name="transactionManager">??
  • ????????????<ref?bean="springTransactionManager"/>??
  • ????????</property>??????
  • ????????<property?name="target">??
  • ????????????<ref?bean="userServiceTarget"/>??
  • ????????</property>??
  • ????????<property?name="transactionAttributes">??????????
  • ????????????<props>??
  • ????????????????<prop?key="insert*">PROPAGATION_REQUIRED,-Exception</prop>??????????????
  • ????????????</props>??
  • ????????</property>??
  • ????</bean>??
  • </beans>??


  • 看上下文中的代碼,很大部分和JOTM的相似,atomikos使用com.atomikos.jdbc.SimpleDataSourceBean類來創建datasource bean,這里需要特別注意?

    Java代碼??
  • <property?name="uniqueResourceName">?????
  • ????<value>mysql/main</value>?????
  • </property>????


  • Java代碼??
  • <property?name="uniqueResourceName">?????
  • ????<value>mysql/news</value>??
  • </property>??

  • 上面的代碼為每個Datasource配置了一個唯一的名稱,名稱不允許相同,否則將會使用同一個datasource,而不會出現異常。?

    另外在配置文件中定義了Atomikos的事務管理器,并在Spring的JtaTransactionManager中引用?

    Java代碼??
  • <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="300"/>???
  • ????</bean>??
  • ??
  • ????<bean?id="springTransactionManager"?class="org.springframework.transaction.jta.JtaTransactionManager">??
  • ????????<property?name="transactionManager"><ref?bean="atomikosTransactionManager"??/></property>??
  • ????????<property?name="userTransaction"><ref?bean="atomikosUserTransaction"??/></property>??
  • ????</bean>??


  • 其它的代碼沒什么特別,和JOTM配置基本相同,JdbcTemplate,DAO,Service,事務代理等等....?

    仍然使用TestXa.java,修改成引用ApplicationContext-atomikos.xml的上下文配置?

    Java代碼??
  • protected?String[]?getConfigLocations()?{??
  • ????//return?new?String[]?{?"classpath:ApplicationContext-jotm.xml"?};??
  • ????return?new?String[]?{?"classpath:ApplicationContext-atomikos.xml"?};??
  • }??


  • 運行test,然后查看數據庫狀態,?
    然后修改方法參數使其不違反數據庫約束,再運行Test觀察數據庫 :)。?

    轉載于:https://www.cnblogs.com/chenying99/p/3183169.html

    總結

    以上是生活随笔為你收集整理的Spring JTA应用JOTM Atomikos III Atomikos的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。