gpt4 book ai didi

jpa - @EJB 注释与 JNDI 查找 + 事务

转载 作者:行者123 更新时间:2023-12-04 04:42:51 24 4
gpt4 key购买 nike

根据另一篇文章 [1],通过 JNDI 查找调用 session EJB 和使用 @EJB 注释之间没有区别。但是,在以下场景中:

1.- 调用 session EJB1(JDBC 在此处插入)
2.- 从 EJB1 调用 session EJB2(此处插入更多内容)
3.- 回滚事务(来自 EJB1)

如果我使用@EJB 注释它可以正常工作,但是使用JNDI 查找它不会,第二个EJB 中的事务是一个新的并且不会发生回滚。所有这一切都与 CMT 相关。

我在 Geronimo/ibmwasce-2.1.1.6 中部署了所有这些东西。

¿ 我是否需要将事务从一个 EJB 显式传递到另一个?我以为这是连续工作。 ¿ 有什么线索吗?

[1] @EJB annotation vs JNDI lookup

更新:

通过注释的代码:

@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");

交易代码是一样的。

最佳答案

看来,您有事务传播问题。

问题似乎是,在你的 JNDI查找您搜索的 远程 EJB (不是本地),它会执行 不是 在与 EJB1 相同的事务上下文中执行。

使用 @EJB 时上面的注释,本地实现被注入(inject),具有相同的事务上下文。

关于jpa - @EJB 注释与 JNDI 查找 + 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com