3

我有一个带有以下注释的有状态会话 bean:

@Stateful
@Name("fooBar")
public class FooBarAction implements FooBar {

我注意到有两种方法可以获取我的 FooBar 实例:

接缝查找:

Component.getInstance(FooBarAction.class);

JNDI 查找:

(new InitialContext()).lookup("MYAPP/FooBarAction/local");

当我使用 JNDI 查找时,每次执行查找时,我都会注意到创建了一个新的 FooBar 实例。默认构造函数被调用,setter 方法用于恢复我的 SFSB 的状态(属性)。

当我使用 Seam 查找时,不会调用默认构造函数,也不会调用 setter 方法。我只有实例。与上一个查找相同的实例。

那么有什么区别呢?最好的使用方法是什么?

4

1 回答 1

2

来自文档:此方法返回指定组件的单例,因此使用相同的组件名称连续调用两次将返回该组件的相同实例。

于 2012-08-27T07:49:18.123 回答