JBoss -> GlassFish: ローカル EJB の JNDI 参照

<p> このエントリは、 <a href="#related-links"> 1 </a> で解説されている JBoss から GlassFish への移行例に基づいて書かれています。

<p>JBoss では、ローカル EJB を参照するのに "jsfejb3/TodoDao/local" のような JNDI 名を使用します。これは標準の名前ではありませんので、次に述べるいずれかの方法を用いて下さい。
<ul>
<li>java:comp/env 名前空間内の JNDI 名を使ってローカル EJB を参照し、配備記述子に ejb-local-ref 要素を追加する。
<li>依存性注入を用いて、コード内にローカルEJBへの参照を注入する
</ul>

<p><b>例: java:comp/env 名前空間を使用する</b>
<pre>
<b>// JBoss </b>
public class TodoBean {

private Todo todo;
...

private TodoDaoInt getDao () {
try

Unknown macro: { InitialContext ctx = new InitialContext(); <font color="#FF0000">return (TodoDaoInt) ctx.lookup("jsfejb3/TodoDao/local");</font> }

catch (Exception e)

Unknown macro: { e.printStackTrace(); throw new RuntimeException("couldn't lookup Dao", e); }

}

@Stateless
public class TodoDao implements TodoDaoInt

Unknown macro: { ... }



public interface TodoDaoInt

<b>// GlassFish </b>
// TodoBean クラスのコードに変換
public class TodoBean {
.
private Todo todo;
...

private TodoDaoInt getDao () {
try

Unknown macro: { InitialContext ctx = new InitialContext(); <font color="#0000FF">return (TodoDaoInt) ctx.lookup("jsfejb3/TodoDao/local");</font> }

catch (Exception e)

}

InitialContext ctx = new InitialContext();
return (TodoDaoInt)ctx.lookup("java:comp/env/ejb/TodoDao");

<b>// web.xml に ejb-local-ref などの要素を追加</b>
<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>
</pre>

<p>EJB 参照を注入するための依存性注入については、既に別のドキュメントで解説されていますので、ここでは実例は示しません。

<a name="related-links">関連リンク</a>
1 <a href="http://weblogs.java.net/blog/sekhar/archive/2008/02/migration_jboss.html">
JBoss JSF-EJB3 アプリケーションの GlassFish への移行(英語)</a>


日本語翻訳: Kana. Kotake

英文 (翻訳したバージョン: 7)