注入@Startup @Singleton bean 实例为空 - Tomee Webprofile 1.6.0.2



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

提前非常感谢,泰德·

多米启动日志:

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;
    }
}

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

MyPojo mp = new MyPojo(someInput);

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

最新更新