Java EE将CDI @SessionScoped注入EJB @Stateless会话bean

时间:2013-07-03 09:57:39

标签: java java-ee glassfish ejb cdi

我如何注入这个类(它在项目的战争部分内):

@Named("user")
@SessionScoped
public class User implements Serializable
{....}

进入这个EJB会话bean:

@Stateless
@LocalBean
public class testSB 
{    inject User here... }

我尝试使用@Inject,但它不起作用。它似乎无法识别User类。 我试图寻找一个将CDI注入EJB的示例,但找不到任何有用的东西。

这甚至可能吗?这样做的正确方法是什么?我想直接从User类获取数据,而不是在方法中传递值。

3 个答案:

答案 0 :(得分:1)

Provider<User>注入无状态bean。然后,当您需要用户时,请执行userProdiver.get()

答案 1 :(得分:0)

注意不要实例化“testSB”对象(这样你就不能指望容器向你注入“User”类的对象)。容器能够向你注入一个“User”类的对象,你必须让容器实例化类“testSB”的对象。

我不认为在“RequestBean”中注入“SessionBean”存在问题。所有“RequestBean”对象都将共享“SessionBean”类的相同对象。

答案 2 :(得分:0)

使用CDI,您应该能够在任何地方注入任何内容,即使在EJB SessionScoped中也是如此。

尝试将空beans.xml添加到META-INF。请在这里查看我的答案:

Java EE 7 - @Decorator, @Stateless and @PersistenceContext = nullpointerException

最诚挚的问候, 亚历山大