我在 ejb-jar.xml 中部署了一个 EJB,我想访问
<transaction-type>
在 ejbCreate() 期间我的 EJB 类中的配置,即 Bean 或 Container,因为我必须将此值传递给我的框架以进行内部工作。
注意:我不想重复并为其已经存在的相同定义一个额外的 env-entry,我想使用它
我在 ejb-jar.xml 中部署了一个 EJB,我想访问
<transaction-type>
在 ejbCreate() 期间我的 EJB 类中的配置,即 Bean 或 Container,因为我必须将此值传递给我的框架以进行内部工作。
注意:我不想重复并为其已经存在的相同定义一个额外的 env-entry,我想使用它
没有直接确定此信息的方法。但是,您可以通过依赖EJBContext.getUserTransaction为 CMT 引发异常这一事实间接获取信息:
@Resource EJBContext ejbContext;
private boolean isBeanManagedTransaction() {
try {
ejbContext.getUserTransaction();
return true;
} catch (IllegalStateException e) {
return false;
}
}
请注意,getUserTransaction 方法不能从所有容器回调中调用(参见 EJB 规范中允许的操作表),但幸运的是,getUserTransaction 可以从 ejbCreate/PostConstruct 中调用,因此该方法应该适用于您的目的。