如何在servlet线程中获取新的有状态会话bean?

时间:2010-05-14 10:39:16

标签: java servlets dependency-injection java-ee ejb-3.0

我正在尝试使用EJB3

我想将一个有状态会话bean注入一个servlet,这样每个访问servlet的用户都会获得一个新的bean。

显然,我不能让bean成为servlet的实例变量,因为它将被共享。并且不允许显着地注入局部变量。

我可以使用new运算符来创建bean,但这似乎不是正确的方法。

有没有正确的方法呢?看起来我想要做的事情是相当简单的,毕竟,我们希望每个新客户都能找到一个空的购物车。

1 个答案:

答案 0 :(得分:14)

您无法使用new获取新的SFSB。

您通常使用lookupInitialContext新的MyBean bean = (MyBean) new InitialContext().lookup( name );

{{1}}

然后,您将获得对可以在请求中重用的特定SFSB的引用。

来自this answer

  

你通常不应该注射SFSB,   除非是进入另一个SFSB或进入   Java EE客户端。你应该使用@EJB   在引用类(例如你的   servlet)声明ejb-ref和   然后在代码中执行JNDI查找   获取实例。这个例子   然后可以直接放在你的   Http会话。

有关SFSB的更多信息,您可能会对我的其他答案感兴趣:

希望它有所帮助。