为什么要使用Home接口来创建bean的实例?而是直接查找? (ejb 2.1)

时间:2013-09-14 00:22:43

标签: ejb-2.x

我无法理解为什么在所有指南中都写这个:

SayHiRemote sayHiRemote = InitialContext
            .<SayHiHomeRemote> doLookup(SayHiHomeRemote.JNDI_GLOBAL_NAME)
            .create();
sayHiRemote.hi();

而不仅仅是:

SayHiRemote sayHiRemote = InitialContext
            .<SayHiRemote> doLookup(SayHiRemote.JNDI_GLOBAL_NAME);
sayHiRemote.hi();

如果不需要参数(无状态会话Bean),“create()”方法有什么好处?

1 个答案:

答案 0 :(得分:0)

在EJB 3之前,无法直接查找无状态会话bean。除了与其他bean类型的一致性之外没有其他任何好处,这就是它在EJB 3中被删除的原因。

有状态会话bean仍然有一个好处,因为create方法是工厂方法,因此如果切换到EJB,则会丢失类型安全性(cast vs create()返回类型)并且取决于JNDI的相对速度vs home.create(),你可能会失去一些表现。