有没有办法将EJB注入自定义资源包

时间:2013-04-18 12:44:37

标签: jsf ejb resourcebundle

我正在尝试构建一个资源包,它从数据库而不是属性文件中获取消息。我做了一些扩展ResourceBundle,ResourceBundle.Control和ListResourceBundle的测试,我想我正走在正确的道路上。

当我需要查询实际数据库以从我的ResourceBundle实现中获取消息时,我才刚刚达到目的。我想利用我在EJB层上的所有JPA基础结构来运行查询并实例化将存储密钥,消息和语言环境的对象。所以,如果我能将@Start-inject会话bean注入ResourceBundle,那将是完美的,但我找不到办法。

这是我的ResourceBundle代码:

@ManagedBean(eager=true)
@ApplicationScoped
public class ResourceDicWeb extends ListResourceBundle {

@EJB
private MyDAO myDAO;

@Override
protected Object[][] getContents() {
    List<DicWeb> dicWeb = updateDictionary();

    Object[][] content = new Object[dicWeb.size()][2];

    for(int i = 0; i <= dicWeb.size(); i++) {
        content[i][0] = dicWeb.get(i).getAtrKey();
        content[i][1] = dicWeb.get(i).getAtrMessage();
    }

    return content;
}

    private List<DicWeb> updateDictionary() {
        return myDAO.fetchDictionary(); // at this point myDAO is always null
    }

}

我的下一步是使用老式的jdbc直接从resourcebundle创建数据库连接,但这绝对是最后一个选项。

干杯!

1 个答案:

答案 0 :(得分:0)

如果注射不起作用,那么您仍然可以通过JNDI执行此操作。

Context ctx = new InitialContext();
MyDao myDao = (MyDao) ctx.lookup("myapp/myejbmodule/MyDao!org.myapp.ejb.MyDao");