- PR -

BMPでsetEntityContextでのデータソース設定

1
投稿者投稿内容
jam
会議室デビュー日: 2005/02/04
投稿数: 10
投稿日時: 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

こんな感じなのですが、なにか間違っているのか、
なにか足りないのか・・・
よろしくお願いします。





------------------------------------







jam
会議室デビュー日: 2005/02/04
投稿数: 10
投稿日時: 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]だと相変わらず最初のエラーです。
やっぱり何か間違えているか、知識不足だと思います。

ご存知の方、よろしくお願い致します。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-07-21 14:35
EJBから使用するリソースは、EJBのコンテキストに設定してやらなければなりません。
web.xmlはWebアプリケーションのコンテキストを設定するものです。Websphereだと確か
ejb-jar.xmlとibm-ejb-jar-bnd.xmiで設定するはずです。
jam
会議室デビュー日: 2005/02/04
投稿数: 10
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)