假设一种情况。client代码调用ejb A,ejb A调用pojo B做一些存储操作。现在我希望在pojo B中进行事务控制,毕竟B中的代码更接近于存储操作,在里面可以更精确的控制事务边界。我现在希望的代码是这样:
public class B{
  public void persist(DTO d){
    InitialContext context = new InitialContext();
    UserTransaction ut = context.lookup("Some JNDI name for transaction");
    ut.begin();
    .....  }
}
但是实际上根本行不通,试过几个JNDI名字,都没有办法找到UserTransaction。但是相同的JNDI名称,把查找过程放到EJB中就可以找到。这说明JNDI名字可能并不是问题所在,可能是在pojo中不能这样使用。大家有办法在pojo中访问UserTransaction吗?ps:这个是遗留系统,改变架构设计是不可能的了,所以需要在pojo中访问UserTransaction