根据另一篇文章 [1],通过 JNDI 查找调用会话 EJB 和使用 @EJB 注释之间没有区别。但是,在以下场景中:
1.- 调用会话 EJB1(JDBC 插入此处) 2.- 从 EJB1,调用会话 EJB2(更多插入此处) 3.- 回滚事务(从 EJB1)
如果我使用@EJB 注释它可以正常工作,但是使用JNDI 查找它不会,第二个EJB 中的事务是一个新的并且不会发生回滚。所有这一切都与 CMT 相关。
我在 Geronimo/ibmwasce-2.1.1.6 中部署了所有这些东西。
¿ 我是否需要将事务从一个 EJB 显式传递到另一个?我以为这是连续工作。¿ 有什么线索吗?
[1] @EJB 注释与 JNDI 查找
更新:
通过注释的代码:
@EJB
private CodAppEjb codAppejbAnotacion;
通过 jndi 编写代码:
CodAppEjb codAppejb;
InitialContext ctx;
Properties properties= new Properties();
properties.setProperty("java.naming.provider.url", "ejbd://127.0.0.1:4201");
properties.setProperty("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
ctx = new InitialContext(properties);
codAppejb= (CodAppEjb) ctx.lookup("CodAppEjbBeanRemote");
交易代码是一样的。