0

プロパティ ファイルではなく、データベースからメッセージを取得するリソース バンドルを構築しようとしています。ResourceBundle、ResourceBundle.Control、および ListResourceBundle を拡張するいくつかのテストを行いましたが、正しい道を進んでいると思います。

ResourceBundle 実装からメッセージを取得するために、実際のデータベースにクエリを実行する必要がある時点に到達しました。クエリを実行し、キー、メッセージ、およびロケールを格納するオブジェクトをインスタンス化するために、EJB レイヤーにあるすべての JPA インフラストラクチャを活用したいと考えています。したがって、セッション Bean を ResourceBundle に @EJB インジェクトでき​​れば完璧ですが、それを行う方法が見つかりません。

ここに私の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 に答える