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

mik*_*kek 2 java ejb ejb-3.0

我正处于需要创建缓存以存储需要从数据库更新的某些值的情况.由于这个缓存需要是单一的,因此某种单例实现似乎是合适的.

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

显而易见的解决方案是将EJB作为参数传递到缓存中,但是在上下文之外传递EJB会感觉不对,但我不能说为什么.是接受的做法吗?

Arj*_*jms 6

请注意,您通常不会"在上下文之外"传递EJB本身.你通常传递的是一个"存根".此存根可以作为任何其他常规对象引用传递.对它的任何调用都将重定向回EJB容器中的实际bean实例.

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

出于所有目的和目的,@ Singleton注释确实是为这样的东西而制作的.希望你能尽快使用它;)