1

我怎样才能注入这个类(它在项目的战争部分):

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

进入这个 EJB 会话 bean:

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

我尝试使用@Inject但它不起作用。似乎它不承认User类。我尝试寻找将 CDI 注入 EJB 的示例,但找不到任何可行的方法。

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

4

3 回答 3

1

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

于 2013-07-03T10:02:08.657 回答
0

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

我认为在“RequestBean”中注入“SessionBean”没有问题。您所有的“RequestBean”对象都将共享“SessionBean”类的同一个对象。

于 2013-12-23T21:03:03.817 回答
0

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

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

Java EE 7 - @Decorator、@Stateless 和 @PersistenceContext = nullpointerException

最好的问候,亚历山大

于 2015-05-08T07:45:54.743 回答