Java EJB事务和业务对象

Java EJB事务和业务对象,java,jakarta-ee,transactions,Java,Jakarta Ee,Transactions,我正在尝试启动一个新的ejb事务: @TransactionAttribute(TransactionAttributeType.REQUIRES\u NEW) 我的服务方法中的注释。一切正常,在我的服务中有一个叫做BusinessObject的东西。当该businessObject抛出异常时,它将传播到ejb并回滚事务 我的问题是:是否可以使用ejb具有的相同注释使businessObject方法在不同的事务中执行 例如: @Stateless public class Service

我正在尝试启动一个新的ejb事务:

@TransactionAttribute(TransactionAttributeType.REQUIRES\u NEW)

我的服务方法中的注释。一切正常,在我的服务中有一个叫做BusinessObject的东西。当该businessObject抛出异常时,它将传播到ejb并回滚事务

我的问题是:是否可以使用ejb具有的相同注释使businessObject方法在不同的事务中执行

例如:

@Stateless
    public class Service {

    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public int methodA(String name) {
        BusinessObject business = new BusinessObject();
        business.save(name);
    }
}

public BusinessObject {
    public void save(String name){
        doSomeStuff(name);   
        log(name);
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    private log(name){
        doSomeOtherStuff(name);
    }
}
检查我的业务对象的日志方法上的事务属性。。。这是一个有效的注释?显然,它不在ejb中,但是上下文已经在事务中了


谢谢你的帮助

此事务边界通过拦截器和代理实现。如果不通过拦截器调用该方法,它将无法工作。因为不会有拦截器来拦截调用。因此事务注释必须仅存在于ejb类中才能正常工作?ejb中有两种类型的事务。容器管理和bean管理。如果类不是ejb,那么容器既不管理它也不管理它自己。答案是肯定的,它应该是一个ejb来处理ejb事务边界。是的,据我所知,处理transactionAttribute注释的拦截器不存在于ejb上下文之外。因此,任何带有transactionAttribute的非ejb注释类都无法工作,或者换句话说,注释将被忽略/不被处理。