【问题标题】:Injection of @Startup @Singleton bean instance is null - Tomee Webprofile 1.6.0.2@Startup @Singleton bean 实例的注入为空 - Tomee Webprofile 1.6.0.2
【发布时间】:2015-02-20 00:39:02
【问题描述】:

当我尝试在 POJO 中使用它时,Tomee 成功创建、启动和放置在“我的单例容器”中的 @Singleton @Startup bean 实例为空。我已经尝试过使用和不使用 POJO 的 @ManagedBean 注释。我是否遗漏了规范或教程中的一些基本内容?

提前非常感谢, 泰德·S.

Tomee 启动日志:

Dec 21, 2014 2:48:24 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Started Ejb(deployment-id=MyStartupBean, ejb-name=MyStartupBean, container=My Singleton Container)

MyStartupBean.java:

@Startup
@Singleton
public class MyStartupBean
{
    private final Properties _companyNames = new Properties();

    @PostConstruct
    public void init() 
    {   
        _companyNames.put("key1", "ABC Company");
        _companyNames.put("key2", "XYZ Company");
     }

    public Properties getCompanyNames()
    {
        return _companyNames;
     }
}

MyPojo.java:

public class MyPojo
{
    @EJB
    private MyStartupBean _startupBean;
    private String _companyName;    

    public MyPojo(String inputKey)
    {
        Properties companyNames = _startupBean.getCompanyNames(); // <== _startupBean is null
        String name = companyNames.getProperty(inputKey);
        setCompanyName(name);
    }

    public void setCompanyName(String name)
    {
        _companyName = name;
    }

    public String getCompanyName()
    {
        return _companyName;
    }
}

【问题讨论】:

    标签: java cdi java-ee-6


    【解决方案1】:

    您可能正在实例化您的 pojo,不是吗,例如

    MyPojo mp = new MyPojo(someInput);
    

    当你这样做时,注入不起作用。您需要使用托管引用来处理 CDI/EJB 组件。

    【讨论】:

    • 是的,你是对的。我了解在使用 Web UI 引用对象时如何使用托管引用。当 pojo 未被任何浏览器 UI 引用时,如何使用托管引用?即只有当系统接收到不是通过浏览器启动的消息时才会实例化 pojo。谢谢。
    • 收到一条消息 - JMS 还是其他?
    • 我猜,getter 是怎么称呼的?
    • 消息是通过SMS(文本消息)系统接收的。从另一个定期实例化的 pojo 调用 Getter。
    • 我最初的意图是在应用程序的 main() 方法之前声明一个对象,并让应用程序引用该对象而不打扰注释或 CDI,但我无法发现它们隐藏在哪里main() 在这个框架中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2013-05-29
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多