繁体   English   中英

将EJB分配给变量并返回

[英]Assigning EJB to a variable and returning

我有一个工厂模式实现。

 class FactoryValidator {
    @EJB
    FieldValidator fv;

    @EJB
    MethodValidator mv;

    public Validator getValidator(VType type){
        Validator v = null

        switch(type) {
        case FIELD:
            v = fv; break;
        case METHOD:
            v = mv;break;
        }

        return v;
    }
 }

返回上面的EJB引用可以吗? 还是有更好的方法来解决这个问题? 我知道您可以直接从case语句返回EJB。 但是我想那不是一个好习惯。

有什么想法吗?

注意,您将返回对存根的引用,该存根不是直接指向EJB bean对象,而是指向JNDI树上的元素。 我认为这不是一个坏习惯,但是您必须小心,因为:

  1. 对于SFSB,此工厂上的所有调用都将引用同一bean实例,可以随时将其丢弃(如果发生异常,则调用@Remove方法)
  2. EJB存根仅在JNDI上下文有效的情况下才有效,据我所知,该上下文已绑定到线程。

当我在CDI服务中需要EJB计时器时,我使用了这种解决方案,并且运行良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM