事务管理,JTA一定要应用服务器myisam为什么不支持事务吗

一个事务包含多个操作多个操莋操作了多个数据源,这样的事务称为分布式事务

单一数据源事务管理可以借助数据源本地事务完成,实现简单

分布式事务之困难:不鈳简单的借助数据源本地事务完成

但是这样的事务有保障吗

1、提交时,db1提交成功,db2网络不通

2、提交时con1提交完成,此时应用重启了或者应用及其斷电了

分布式事务管理需要什么?

1协调各数据源提交、回滚、以及应对通信异常的管理机制

2数据源需要myisam为什么不支持事务这种机制

从上面可鉯得出,做分布式事务管理需要的参与者

 如果是这样,那么

1 事务管理器协调数据源两者之间需要通信,并需要一套协议规范

2为应对网络主机故障等,事务管理器数据源需要记录相关的事务日志

X/Open(The open group)提出的分布式事务处理规范,分布式事务处理的工业标准

Java 根据XA规范提出的事务處理规范

目的:同意API,简化程序员的学习简化编程

JavaEE应用服务器内建JTA事务管理(TM),提供商:

开源、独立的JTA事务管理器(TM)组件:

在连接池组件Φ一般也会提供包装实现:

Spring 自身并未提供jta TM实现但提供了很好的集成

根据TM的提供者不通,分为两种应用方式

方式一:使用JavaEE服务器内建的TM鼡法做如下配置即可

应用使用的数据源需是myisam为什么不支持事务xa的数据源

方式二:在没有实现TM的应用服务器上(Tomcat,jetty),将独立的TM组件集成到

一:使用轻量级服务器+集成TM组件

二:使用轻量级服务器+集成TM组件

2、配置数据源一定要是XA数据源

 项目中使用两个dataSourc,两个sessionFactory.由于业务变囮需要在项目中切换数据源,单独配置多数据源以及单独配置JTA都能成功将多数据与JTA整合之后,项目启动总是抛出异常

  
网上说是jdbc的事務与hibernate的事务起冲突了,但没有找到解决办法求大神指点。
项目加载时调用的方法含get*,find*,将这些get去掉则不会抛出异常但是去掉之后事务应该沒有作用了吧。
请各位大神指点 谢谢 小弟没有金币悬赏谢谢各位了。

我要回帖

更多关于 myisam为什么不支持事务 的文章

 

随机推荐