java - 将 EJB 作为参数传递给辅助类是错误的吗?

标签 java ejb-3.0 ejb

我现在需要创建一个缓存来存储某些需要从数据库更新的值。由于这个缓存需要是单一的,某种单例实现似乎是合适的。

问题是这个缓存还需要通过 EJB 访问数据库,这不能被注入(inject),因为缓存存在于上下文之外(是的,我期待 EJB3.1 中的@singleton 注释).

明显的解决方案是将 EJB 作为参数传递到缓存中,但在上下文之外传递 EJB 感觉不对,但我说不出原因。这是公认的做法吗?

最佳答案

请注意,您通常不会“在上下文之外”传递 EJB 本身。您通常传递的是“ stub ”。这个 stub 可以像任何其他普通对象引用一样传递。对它的任何调用都将重定向回 EJB 容器中的实际 bean 实例。

因此,如果您在 web 模块中有一个缓存,有一个注入(inject)了 EJB 的支持 bean(或执行 JNDI 查找)并将该引用传递给(静态)缓存,那么我看不出根本问题

出于所有意图和目的,@Singleton 注释确实是为这样的事情而创建的。希望您能尽快使用它 ;)

关于java - 将 EJB 作为参数传递给辅助类是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5076332/

相关文章:

java - EJB 本地包括远程

java - 如何避免捕获 EJB Rollbacked ApplicationException 后回滚?

java - 在 TomEE 中注入(inject) EntityManager 会导致 NullPointerException?

java - 理解数组和赋值

java - 从主类启动 osgi 包而不是实现 BundleActivator

java - EJB 和在数据结构(映射、列表等)中存储对象

jpa - EJB 3.0和JPA之间的关系?

java - 使用 JNDI 加载 NamingException Bean

java - 如何将 android 库(作为 Angle)链接到我的 Eclipse 项目?

java - 使用虚拟 xml 以编程方式运行特定 TestNG 方法