xa分布式事物管理器示例4
来源:互联网 发布:java字节流写入文件 编辑:程序博客网 时间:2024/06/08 05:11
如果容器支持jta,那么spring配置起来非常简单,因为spring提供了JtaTransactionManager,在这里面提供了几乎所有的服务器的jta的jndi名字,比如
* "java:comp/UserTransaction" for Resin 2.x, Oracle OC4J (Orion), JOnAS (JOTM), BEA WebLogic
* "java:comp/TransactionManager" for Resin 3.x
* "java:appserver/TransactionManager" for GlassFish
* "java:pm/TransactionManager" for Borland Enterprise Server and Sun Application Server (Sun ONE 7 and later)
* "java:/TransactionManager" for JBoss Application Server
* "java:comp/TransactionManager" for Resin 3.x
* "java:appserver/TransactionManager" for GlassFish
* "java:pm/TransactionManager" for Borland Enterprise Server and Sun Application Server (Sun ONE 7 and later)
* "java:/TransactionManager" for JBoss Application Server
由于大部分服务器获取jta的方式都不尽相同,spring还针对不同的服务器提供了不同的jta实现,例如:
WebLogicJtaTransactionManager
WebSphereUowTransactionManager
OC4JJtaTransactionManager
WebSphereUowTransactionManager
OC4JJtaTransactionManager
具体内容参加:
http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/transaction/jta/JtaTransactionManager.html
不管是jdbc、hibernate还是ibatis,都可以通过JtaTransactionManager来配置分布式事务
下面简单贴出部分配置代码:
hibernate:
<beans>
<jee:jndi-lookup id="myDataSource1" jndi-name="dsjndi1" />
<jee:jndi-lookup id="myDataSource2" jndi-name="dsjndi2" />
<bean id="mySessionFactory1"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="myDataSource1" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hiberante.format_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.landor.test.entity.User</value>
</list>
</property>
<property name="annotatedPackages">
<list>
<value>com.landor.test.entity</value>
</list>
</property>
</bean>
<bean id="mySessionFactory2"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="myDataSource2" />
</property>
</bean>
<bean id="myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
<!--如果默认id=transactionManager,那么可以有下面的标签,这样spring会自动寻找相应的jta的jndi并且注入
<tx:jta-transaction-manager/>-->
<tx:advice id="txAdvice" transaction-manager="myTxManager">
<tx:attributes>
<tx:method name="select*" read-only="true" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED" isolation="REPEATABLE_READ"/>
<tx:method name="update*" propagation="REQUIRED" isolation="REPEATABLE_READ"/>
<tx:method name="add*" propagation="REQUIRED" isolation="REPEATABLE_READ" />
<tx:method name="delete*" propagation="REQUIRED" isolation="REPEATABLE_READ"/>
</tx:attributes>
</tx:advice>
</beans>
<jee:jndi-lookup id="myDataSource1" jndi-name="dsjndi1" />
<jee:jndi-lookup id="myDataSource2" jndi-name="dsjndi2" />
<bean id="mySessionFactory1"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="myDataSource1" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hiberante.format_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.landor.test.entity.User</value>
</list>
</property>
<property name="annotatedPackages">
<list>
<value>com.landor.test.entity</value>
</list>
</property>
</bean>
<bean id="mySessionFactory2"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="myDataSource2" />
</property>
</bean>
<bean id="myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
<!--如果默认id=transactionManager,那么可以有下面的标签,这样spring会自动寻找相应的jta的jndi并且注入
<tx:jta-transaction-manager/>-->
<tx:advice id="txAdvice" transaction-manager="myTxManager">
<tx:attributes>
<tx:method name="select*" read-only="true" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED" isolation="REPEATABLE_READ"/>
<tx:method name="update*" propagation="REQUIRED" isolation="REPEATABLE_READ"/>
<tx:method name="add*" propagation="REQUIRED" isolation="REPEATABLE_READ" />
<tx:method name="delete*" propagation="REQUIRED" isolation="REPEATABLE_READ"/>
</tx:attributes>
</tx:advice>
</beans>
ibatis:
ibatis与hibernate是一样的,只需要将hibernate的sessionFactory部分更换一下
......
<bean id="sqlMap1Client"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="myDataSource1" />
<property name="configLocation" value="xxx/SqlMapConfig.xml" />
</bean>
<bean id="sqlMap2Client"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="OssDS" />
<property name="configLocation" value="xxx/SqlMapConfig.xml" />
</bean>
......
<bean id="sqlMap1Client"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="myDataSource1" />
<property name="configLocation" value="xxx/SqlMapConfig.xml" />
</bean>
<bean id="sqlMap2Client"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="OssDS" />
<property name="configLocation" value="xxx/SqlMapConfig.xml" />
</bean>
......
0 0
- xa分布式事物管理器示例4
- 分布式事物示例3
- 事物管理器
- XA分布式事务处理
- 分布式事务处理(XA事务处理)
- XA分布式事务处理
- XA分布式事务处理
- XA分布式事务处理
- XA分布式事务处理
- 分布式 (XA)事务
- MySQL分布式XA事务
- XA分布式事务处理
- MySQL分布式XA事务
- 分布式事务XA
- MySQL分布式XA事务
- 分布式事务XA
- 分布式事物
- 分布式事物
- jquery编写选项卡Tab页跳转功能
- 配置Tomcat JNDI数据源
- androidstudio 中删除git库
- EL表达式详解
- 分布式事物示例3
- xa分布式事物管理器示例4
- plsq乱码及导出
- include等效做法,ajax返回HTML
- RF switches for RFID HF 13.56Mhz
- 面试复习——Android工程师之Java基础
- response打印字节和字符串的方法区别
- 欢迎使用CSDN-markdown编辑器
- Java定时任务表达式
- plsq ip地址链接