我正在尝试构建一个从数据库而不是属性文件获取消息的资源包。我做了一些扩展 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 直接从资源包创建数据库连接,但这绝对是最后的选择。
干杯!