お疲れ様です、小竹です。
塩田さん、名前の追加ありがとうございました!
早速訳してみましたが、GlassFishはこれが一本目なので
さしつかえなければ一度レビューをお願いします。
(原文のまま改行を入れておらず、見づらくて申し訳ありません)
【気にかかっている箇所】
・エントリ:「記事」としようかとも思いましたが、用語集にならってエントリのままにしました
・文末の参照リンク先記事名:和訳はないようなので英文タイトルのままです
・マイグレーションはマイグレーションのままにしました
ご意見・ご指定等頂ければ幸いです。
/*
余談ながら、DIの依存性「注入」にはいつもそこはかとない違和感を感じます。
イメージは分かるのですが、注入…
*/
---以下訳文--------------------------
このエントリは、 [1] で解説されている JBoss から GlassFish へのマイグレーション例に基づいて書かれています。
JBossでは、ローカル EJB を参照するのに "jsfejb3/TodoDao/local" のような JNDI 名を使用します。これは標準的な名前ではありませんので、次のいずれかの方法を用いて下さい。
・java:comp/env 名前空間内の JNDI 名を使ってローカル EJB を参照し、配備記述子に ejb-local-ref 要素を追加する。
・依存性注入を用いてコード内にローカル EJB への参照を注入する
-------------------------
例: java:comp/env namespace を使用
-------------------------
// JBoss
public class TodoBean {
private Todo todo;
...
private TodoDaoInt getDao () {
try {
InitialContext ctx = new InitialContext();
return (TodoDaoInt) ctx.lookup("jsfejb3/TodoDao/local");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("couldn't lookup Dao", e);
}
}
@Stateless
public class TodoDao implements TodoDaoInt { ... }
public interface TodoDaoInt { ... }
// GlassFish
// コードを TodoBean クラスに変換
public class TodoBean {
.
private Todo todo;
...
private TodoDaoInt getDao () {
try {
InitialContext ctx = new InitialContext();
return (TodoDaoInt) ctx.lookup("jsfejb3/TodoDao/local");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("couldn't lookup Dao", e);
}
}
InitialContext ctx = new InitialContext();
return (TodoDaoInt)ctx.lookup("java:comp/env/ejb/TodoDao");
// web.xml に ejb-local-ref などの要素を追加
<ejb-local-ref>
<ejb-ref-name>ejb/TodoDao</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home/>
<local>TodoDaoInt</local>
</ejb-local-ref>
-------------------------
EJB 参照を注入するための依存性注入については既に別のドキュメントで解説されているため、ここでは実例は示しません。
参照リンク
[1] Migrating JBoss's Sample JSF-EJB3 Application To GlassFish