我的@Singleton @Startup bean的实例,Tomee成功地创建,启动和放置了我的单例容器'当我尝试在POJO中使用它时为null。我已尝试使用和不使用POJO的@ManagedBean anotation。我是否遗漏了规范或教程中的基本内容?
非常感谢, 特德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;
}
}
答案 0 :(得分:1)
你可能实例化你的pojo不是你,例如。
MyPojo mp = new MyPojo(someInput);
当你这样做时,注射不起作用。您需要使用托管引用来使用CDI / EJB组件。