关于jms的分布式事务处理问题?

04-09-17 swy
jms支持分布式事务处理吗?如果支持,具体怎么实现的呢?

Azure_2003
2004-09-18 14:00
当然可以,具体怎么实现,那要看要做什么东西了

swy
2004-09-18 15:22
首先感谢你的回答!!!:)

我只想这么做:

一个客户端在对数据库进行了操作1之后,发出消息1,另一个客户端接收消息1,然后对数据库做了操作2。

对数据库的操作1和发出消息1放在一个事务中,当第一个客户端出现任何异常,对数据库的操作1和发出消息这两个动作都回滚,

接收消息和对数据库的操作2放在一个事务中,当第二个客户端出现任何异常,接收消息和对数据库的操作2这两个动作都回滚。

这都能实现吧,怎么实现呢?(我只想用jms,不用消息驱动bean 。)

swy
2004-09-19 09:54
?????

daquan198163
2004-09-20 09:36
可以用EJB,这样就可以利用容器管理的事务

>对数据库的操作1和发出消息1放在一个事务中,当第一个客户端出现任何>异常,对数据库的操作1和发出消息这两个动作都回滚

这两个方法都声明为Required

>接收消息和对数据库的操作2放在一个事务中,当第二个客户端出现任何 >异常,接收消息和对数据库的操作2这两个动作都回滚

接受消息肯定用消息驱动bean,onMessage方法采用默认的事务就行,而对数据库的操作2的方法用RequiresNew,这样可以避免消息重发

daquan198163
2004-09-20 09:38
>对数据库的操作1和发出消息1放在一个事务中,当第一个客户端出现任何>异常,对数据库的操作1和发出消息这两个动作都回滚

这两个方法都声明为Required,然后被另一个ejb方法调用,这样他们就会在同一个事务上下文中了

Azure_2003
2004-09-20 10:54
这个问题没有必要用jms,甚至没有必要用ejb,都是牛刀杀小鸡,:)

用几个并发线程一起计算就够了。

swy
2004-09-20 12:47
to:daquan198163

可是如果不想用ejb(也不用消息驱动bean),只用jms做不到吗?

to:Azure_2003

并发线程?

说说看,我不太懂。

如果实现起来比jms简单那就太好了。

Azure_2003
2004-09-20 13:02
我帮你搞定了,你给我多少钱?哈哈

swy
2004-09-20 13:10
帮帮忙喽。:)

banq
2004-09-24 09:42
JMS可以做到,具体查看JMS设置。

猜你喜欢