【问题标题】:Is there a way to inject an EJB into a custom Resource Bundle有没有办法将 EJB 注入自定义资源包
【发布时间】:2013-04-18 12:44:37
【问题描述】:

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

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

干杯!

【问题讨论】:

    标签: jsf ejb resourcebundle


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 1970-01-01
      • 2014-02-20
      相关资源
      最近更新 更多