带CMT的Ejb3无状态bean

时间:2011-02-18 14:26:42

标签: java transactions java-ee ejb-3.0

有可能有这样的东西吗?带有伪代码的线程中的客户端代码

transaction.begin();
ejb.method();
transaction.commit();

method()属于EJB3无状态会话bean,注释为TransactionAttributeType.REQUIREDmethod()可以设置setRollbackOnly()

如果ejb方法设置了setRollbackOnly(),那么在尝试提交事务之前是否应该进行一些检查?

谢谢!

2 个答案:

答案 0 :(得分:3)

您还可以将被调用bean(方法)的事务属性设置为TransactionAttributeType.REQUIRES_NEW,以强制在您的方法上执行新事务。

BTW:如果您在方法上指定了交易属性,请务必调用代理方法。 即,调用ejb的方法,该方法具有从相同 ejb中设置的特定事务属性,将无法正常工作...

答案 1 :(得分:0)

SLSB的默认设置是您描述的Tx语义。

通过指定EjbContext.setRollbackOnly()可以手动回滚 - 这告诉Contaner(CMT中的“C”)它不应该提交但是收回事务。

如果您想自己完全设置事务,您仍然可以将调用的SLSB方法标记为NotSupported,然后在内部手动打开一个可以转发到其他SLSB调用的Tx。