如何为CDI / Weld输出对象

时间:2014-12-17 16:15:20

标签: java jsf session cdi

我认为这是一个非常基本的问题,但我还没有找到解决方案。 我将如何“推出”一个对象,我后来想把它作为一个被注入的对象。

假设我们有ServiceA,它创建了一个Object

@Stateless
public class ServiceA {

  public void createObject() {

      MyObject myObject = callSomeService();
      ---> now put myObject into the session
  }
}

另一个服务B应该能够使用这个对象:

@Stateless
public class ServiceB {

  //should be available here
  @Inject
  private MyObject myObject

}

我该怎么做? 谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

具体来说,您需要的制作人方法如下所示:

@Produces
@SessionScoped
public MyObject createSessionObject() {
    return callSomeService();
}

第一次访问时,会为会话调用一次。

答案 1 :(得分:1)

您可能需要使用Producer方法。

  

生成器方法可以允许您选择bean实现   运行时,而不是在开发时或部署时。 ~ Java EE 6 Tutorial

您可以找到如何在线使用Producer方法的示例。 This tutorial似乎很有用。

类似的问题: