Gee*_*eek 2 java transactions jta jms ejb-3.0
我知道容器管理事务(CMT).我也知道枚举类型的不同可能值TransactionAttributeType.由于客户端从不直接调用MDB,因此没有客户端启动的事务要加入,因此除了MDB 之外的属性类型REQUIRED并且NOT_SUPPORTED没有意义.那么我何时应该onMessage()使用REQUIREDvs 注释MDB 的方法 NOT_SUPPORTED?提到两个选项中的默认行为是什么?
提到两个选项中的默认行为是什么?
Container-managed MDB 的默认行为是NOT_SUPPORTED.
那么我何时应该使用REQUIRED与NOT_SUPPORTED注释MDB的onMessage()方法?
使用NOT_SUPPORTED意味着 - 如果发生故障 - 在故障之前发生的onMessage()任何更新/操作都不会回滚; 这对于涉及不同资源的原子操作来说是不合需要的.
如果您不想要这种行为,请使用REQUIRED,输入try/catch onMessage(),并setRollbackOnly()在发生任何异常时调用catch().如果onMessage()跨不同资源执行多个操作,则需要XA驱动程序; 例如,更新数据库并在同一事务中发送新的JMS消息肯定需要XA兼容的驱动程序.
MDB的支持仅需要或不支持
MDB可以使用REQUIRED或NOT_SUPPORTED交易属性; 其他属性没有意义,因为它们需要客户端上下文.
容器始终在调用之前启动新事务onMessage().如果调用另一个方法onMessage(),则容器将传递当前事务上下文.
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |