0

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

当我需要查询实际数据库以从我的 ResourceBundle 实现中获取消息时,我刚刚达到了这一点。我想利用 EJB 层上的所有 JPA 基础架构来运行查询并实例化将存储密钥、消息和语言环境的对象。因此,如果我可以将我的会话 bean @EJB-inject 到 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 直接从资源包创建数据库连接,但这绝对是最后的选择。

干杯!

4

1 回答 1

0

如果注入不起作用,那么您仍然应该能够通过JNDI.

Context ctx = new InitialContext();
MyDao myDao = (MyDao) ctx.lookup("myapp/myejbmodule/MyDao!org.myapp.ejb.MyDao");
于 2013-04-18T13:01:29.937 回答