跨数据库事务

zyl2001 2008-01-21 04:33:16
目前项目存在一个这样的问题:

本地数据库:Oracle
远程数据库:Mysql

实现方式:
本地:采用Struts+Hibernate+Spring进行数据操作
远程:采用Spring+XFire的WebServices方式进行数据库操作

现在想实现跨数据库的事务:
比如:在本地插入一条用户信息,同时在远程通过WebServices的方式也插入同样的一条数据,保证两个操作在一个事务中完成.

说明一点:本地的数据库和远程的数据库的库结构是完全一样的.

大家谁有这方面的经验,多多指导!!!
...全文
1282 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxauwxj87 2009-08-27
  • 打赏
  • 举报
回复
我想问JDBC中怎么做跨数据库事务啊?
zyl2001 2008-12-02
  • 打赏
  • 举报
回复
谢谢大家的思路.
已解决,但是处理方式感觉不时很好.
大体思路是这样一来的,
首先进行本地的oracle数据库提交,
如果本地失败,那直接进行回滚,
如果本地成功,则进行远程提交(我使用的是xfire的ws),捕获远程提交的结果,
如果抛出远程异常(remoteExcepiton),则进行回滚
如果成功,则进行提交.
cnoolon 2008-06-25
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 omt123 的回复:]
这个问题我也遇到过,我现在加了一个群,这个群人气较好,也的确有高手 ,不但可以交流问题,而且还可以接项目赚钱,qq群号是:,不要说 我做广告,看看便知,如需要的话加入试试,如果你发现好的交流群也别忘 了告诉我啊!呵呵!

[/Quote]
你怎么什么问题都遇到过啊!
胡矣 2008-06-25
  • 打赏
  • 举报
回复
本地添加成功
远程触发器写入
这样是否能满足你的需求
  • 打赏
  • 举报
回复
webservice没戏
除非改成ejb
nec_8899 2008-06-23
  • 打赏
  • 举报
回复
nec_5499 2008-06-21
  • 打赏
  • 举报
回复
anqini 2008-06-13
  • 打赏
  • 举报
回复
只知道利用spring的JTA,通过weblogic
hello_zhenyu 2008-06-04
  • 打赏
  • 举报
回复
强烈关注中……
jahcy 2008-06-04
  • 打赏
  • 举报
回复
JTA应该可以吧!

这和数据库支持不支持我想没什么关系,只要数据库支持一般的事务就可以了.
理论上JTA只是单库的虚提交,满足条天后,所有的库才commit.如果其中一个库失败,那么所有的库commit是不会执行的.

我没实际经验,只是猜想而已希望对你有启示..
lansb1 2008-06-04
  • 打赏
  • 举报
回复
让数据库之间作同步不可以吗?
hnjd314053754 2008-06-01
  • 打赏
  • 举报
回复
关注一下阿
yangchengly 2008-06-01
  • 打赏
  • 举报
回复
可以使用Java Transaction API,即JTA。如果不习惯使用这个,可以可以来进行控制。你想事物控制不过就是commit和rollback的问题,分布式事务控制就也一样,就是一起commit或rollback的问题。
xiao_feng123 2008-05-31
  • 打赏
  • 举报
回复
WebServices 不是很懂
heipn 2008-05-31
  • 打赏
  • 举报
回复
楼上的别刷了,出于什么目的呢要这样。做什么的也的有起码的人品!BS
heipn 2008-05-30
  • 打赏
  • 举报
回复
后台机制是否需要时时同步,如果不是那么时时,可以考虑异步存储。只要将发送消息接收到成功这一步在主服务器的事务里就好了,为了效率最好后台接收部分是一个简单的存储机制,后台还有一个进程在异步处理这些接收下来的存储。
Ryo_Hazuki 2008-05-29
  • 打赏
  • 举报
回复
webservice没戏
除非改成ejb
lovingprince 2008-05-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 zyl2001 的帖子:]
目前项目存在一个这样的问题:

本地数据库:Oracle
远程数据库:Mysql

实现方式:
本地:采用Struts+Hibernate+Spring进行数据操作
远程:采用Spring+XFire的WebServices方式进行数据库操作

现在想实现跨数据库的事务:
比如:在本地插入一条用户信息,同时在远程通过WebServices的方式也插入同样的一条数据,保证两个操作在一个事务中完成.

说明一点:本地的数据库和远程的数据库的库结构是完全一样的.

大家谁有这方面的…
[/Quote]

其实根据业务需要,有时候这个也没有必要使用分布式事务的。
可以首先操作远程数据库,根据成功或失败,再执行本地数据库操作,如果远程失败,本地就可以采取相应操作(比如记录日志以待本地重做等等),如果远程成功,则操作本地数据库,本地操作失败,则记录日志重做。
临远 2008-05-26
  • 打赏
  • 举报
回复
jta?
UnknowREN 2008-05-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 graygu 的回复:]
可以用JTA支持的二阶段commit, 但是mysql好像是不支持的吧, 要看一下最新的mysql参数了.
不行的话, 只能手工roleback了.
[/Quote]
mysql 使用Innodb方式可以支持事务

但是楼主这个问题还真不好处理,先处理哪一段都不能保证

哪位大侠给介绍下ws的事务管理机制,谢谢
加载更多回复(9)

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧