EJB3.1のテストその後
昨日の夜はミス多発で眠い目をこすりながらやるもんじゃないな・・・。
http://d.hatena.ne.jp/shin/20080519/p1のコメントの続きです。
とりあえずわかったのは@EJBで埋め込まれたクラスがあると、そのクラスの名前+@EJBのフィールド名、もしくは@EJBのname要素で指定したものがJNDIに登録される。
つまり
package hoge; @Stateless public class Hoge{ @EJB private Hello hello; }
というコードだとJNDI名は以下のようになる。
name子弟を入れるとそれが直接マッピングされる
package hoge; @Stateless public class Hoge{ @EJB(name="hogehoge") private Hello hello; }
というコードだとJNDI名は以下のようになる。
java:comp/env/hogehoge
以下のようにマッピング専用のクラスを作ってそこに@EJBの定義をしておくと管理が楽になるかも
package hoge; @Stateless public class Config{ @EJB(name="index.jsp") private IndexAction indexAction; @EJB(name="login.jsp") private LoginAction loginAction; }
というコードだとJNDI名は以下のようになる。
java:comp/env/index.jsp java:comp/env/login.jsp
ActionをインターフェースにしてbeanNameでセットしてもよいが、記述が多少面倒になるのでどうだろ。
package hoge; @Stateless public class Config{ @EJB(name="index.jsp" , beanName="IndexAction") private Action indexAction; @EJB(name="login.jsp" , beanName="LoginAction") private Action loginAction; }