- - PR -
BMPでsetEntityContextでのデータソース設定
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-07-20 19:31
お世話になります。
WASD5.1 にて、Entity Bean の BMP にて、 setEntityContext メソッドで、データソースを設定しているのですが、 「javax.ejb.EJBException: Error Looking up java:comp/env/jdbc/bmpeos Name comp/env/jdbc not found in context "java:".」なエラーが出てしまいます。 いろいろ試しているのですが、lookupできません。 どこがいけないのか・・・よろしくお願いします。 以下、設定内容・・長文ですみません ------------------------------------ ■***Bean.java public void setEntityContext(javax.ejb.EntityContext ctx) { myEntityCtx = ctx; try{ Context context = new InitialContext(); ds = (DataSource)context.lookup("java:comp/env/jdbc/abcd"); }catch(Exception e){ throw new EJBException("Error Looking up - " + e.getMessage()); } } ------------------------------------ ■Test Server JDBC プロバイダーリスト⇒ DB2 JDBC Provider (XA) 上記定義データソース ⇒ jdbc/abcd 型 ⇒ V5 ※あと、databaseNameを設定してます。 ちなみに、CMP用のデータソースだと問題有りません。 また、セキュリティーの JASS認証エントリーも問題ありません。 CMPで試してます ------------------------------------ ■web.xml <resource-ref id="ResourceRef_1121851736018"> <res-ref-name>jdbc/abcd</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>CONTAINER</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> ※ハイディング JNDI名は、jdbc/abcd こんな感じなのですが、なにか間違っているのか、 なにか足りないのか・・・ よろしくお願いします。 ------------------------------------ |
|
投稿日時: 2005-07-21 10:45
お世話になってます。
自己レスです。 [1] ds = (DataSource)context.lookup("java:comp/env/jdbc/abcd"); ↓ 変更 [2] ds = (DataSource)context.lookup("jdbc/abcd"); 上記のように変更してみたら、ejbCreate に置いた、 INSERT文は、期待した結果を残しました。 但し、 lookup では、 リソース参照 jdbc/abcd が見つかりませんでした。そのため、次のデフォルト値が使用されます: [Resource-ref settings] res-auth: 1 (APPLICATION) res-isolation-level: 0 (TRANSACTION_NONE) res-sharing-scope: true (SHAREABLE) res-resolution-control: 999 (undefined) [Other attributes] isCMP1_x: false (not CMP1.x) isJMS: false (not JMS) こんなことに・・結果的にはOKなんですが、 なんだかダメっぽいですよね。こういうのは・・・・。 上記[1]だと相変わらず最初のエラーです。 やっぱり何か間違えているか、知識不足だと思います。 ご存知の方、よろしくお願い致します。 |
|
投稿日時: 2005-07-21 14:35
EJBから使用するリソースは、EJBのコンテキストに設定してやらなければなりません。
web.xmlはWebアプリケーションのコンテキストを設定するものです。Websphereだと確か ejb-jar.xmlとibm-ejb-jar-bnd.xmiで設定するはずです。 |
|
投稿日時: 2005-07-21 16:00
ありがとうございます。uk様
なるほどです。やっぱり知識不足でした。 教えて頂いた通りリソースの参照で処理し、 結果OKでしたm( __ __ )m [1] ds = (DataSource)context.lookup("java:comp/env/jdbc/abcd"); [2] ds = (DataSource)context.lookup("jdbc/abcd"); ※[1][2]どっちもOK!なので[1]にしました。 ■ ejb-jar.xml の該当部分 <entity id="*****"> <ejb-name>*****</ejb-name> <local-home>was5.dev.test.ejb.*****LocalHome</local-home> <local>was5.dev.test.ejb.*****Local</local> <ejb-class>was5.dev.test.ejb.*****Bean</ejb-class> <persistence-type>Bean</persistence-type> <prim-key-class>was5.dev.test.ejb.*****Key</prim-key-class> <reentrant>False</reentrant> <resource-ref id="ResourceRef_1121927926687"> <res-ref-name>jdbc/abcd</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> </entity> 大変助かりました。ありがとうございました。 |
1