gpt4 book ai didi

java - 在 EJB Helper 类中查找实体管理器

转载 作者:行者123 更新时间:2023-12-02 08:24:35 25 4
gpt4 key购买 nike

我正在尝试在某个帮助程序类中注入(inject)实体管理器,我可以将它从 session bean 传递给帮助程序,但问题是我需要在帮助程序类的静态 init block 中使用实体管理器(有些东西)喜欢):

class MySessionBeanHelperClass
{
// staff here...


static
{
SomeClass s = new SomeClass(entityManager);
}
}

所以,我认为唯一的方法是查找实体管理器而不是注入(inject)它。并且使用传递的 SessionContent 在这里也不起作用。 (是吗???)(这是第一个问题)

第二个问题是:如果我使用普通方式查找资源(在本例中为实体管理器)(如下所示:)

Context ic = new InitialContext(); 
em = (EntityManager) ic.lookup("java:comp/env/persistence/em");

这是否会将该实体管理器使用的所有事务转换为 Bean 管理的事务?

谢谢!

最佳答案

我认为从静态初始化程序中执行此操作不是一个好主意。您必须确保在查找发生之前所有必需的服务(例如 JNDI、JPA)都已启动,但您不能保证当您从静态初始化程序中执行此操作时。

EJB 中的一个已知问题是,没有在应用程序上执行一次性任务的“标准”方法。启动/停止,但您可以使用以下链接中的技巧:

How to perform a DB cleanup operation upon shutdown in an EJB container

该示例用于对应用程序执行操作。停止,但您可以改写 Servlet#init

关于java - 在 EJB Helper 类中查找实体管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802747/

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