我正在尝试使用EJB3
我想将一个有状态会话bean注入一个servlet,这样每个访问servlet的用户都会获得一个新的bean。
显然,我不能让bean成为servlet的实例变量,因为它将被共享。并且不允许显着地注入局部变量。
我可以使用new运算符来创建bean,但这似乎不是正确的方法。
有没有正确的方法呢?看起来我想要做的事情是相当简单的,毕竟,我们希望每个新客户都能找到一个空的购物车。
答案 0 :(得分:14)
您无法使用new
获取新的SFSB。
您通常使用lookup
来InitialContext
新的MyBean bean = (MyBean) new InitialContext().lookup( name );
。
{{1}}
然后,您将获得对可以在请求中重用的特定SFSB的引用。
来自this answer:
你通常不应该注射SFSB, 除非是进入另一个SFSB或进入 Java EE客户端。你应该使用@EJB 在引用类(例如你的 servlet)声明ejb-ref和 然后在代码中执行JNDI查找 获取实例。这个例子 然后可以直接放在你的 Http会话。
有关SFSB的更多信息,您可能会对我的其他答案感兴趣:
希望它有所帮助。