5.2.3. ClientTransaction 注解
@org.jboss.ejb.client.annotation.ClientTransaction 注释处理来自 Jakarta Enterprise Beans 客户端的交易传播。如果客户没有交易,您可以强制传播失败,或者防止交易传播,即使客户有一个主动交易。您可以使用 org.jboss.ejb.client.annotation.ClientTransactionPolicy 接口的常量来控制 ClientTransaction 注解的策略。以下是 org.jboss.ejb.client.annotation.ClientTransactionPolicy 接口的常量:
- MANDATORY: Fail(无客户端交易上下文时除外);如果存在客户端侧事务上下文,则传播客户端交易上下文。
- NEVER:不传播任何事务上下文;如果存在客户端交易上下文,则会引发异常。
- 注意_SUPPORTED:不传播任何事务上下文,无论是否存在客户端交易上下文。
- SUPPORTS:如果没有客户端端交易上下文,则中断交易;传播客户端交易上下文(如果存在)。
如果没有注解,则默认策略为 org.jboss.ejb.client.annotation.ClientTransactionPolicy#SUPPORTS,这意味着事务会被传播(如果存在),但传播不会失败,无论事务是否存在。
@ClientTransaction(ClientTransactionPolicy.MANDATORY)
@Remote
public interface RemoteCalculator {
public void callRemoteEjb() { }
}
@Stateless
@Remote(RemoteCalculator.class)
public class CalculatorBean implements RemoteCalculator {
@Override
public void callRemoteEjb() { }
}该注释允许远程接口提供商告知远程接口使用者是否需要方法进行事务。