- PR -

WAS5.0でデータソースの設定

投稿者投稿内容
ゴン太
常連さん
会議室デビュー日: 2003/11/08
投稿数: 20
投稿日時: 2004-01-09 13:46
引用:

skulkerさんの書き込み (2004-01-09 09:41) より:
・Oracle JDBC Thin Driver は deprecated です。Oracle JDBC Driver にしましょう。



ありがとうございます。
Oracle JDBC Driver というのは、
Oracle JDBC oci8 Driver のことでしょうか?

skulker
常連さん
会議室デビュー日: 2003/11/13
投稿数: 41
投稿日時: 2004-01-09 15:25
引用:

ゴン太さんの書き込み (2004-01-09 13:46) より:
Oracle JDBC Driver というのは、
Oracle JDBC oci8 Driver のことでしょうか?



おっと、5.0.0 では Oracle JDBC Driver というデータソースのタイプはなかったようです (5.0.2 の情報でした)。
Oracle JDBC Thin Driver のままにしといてください。
OCIドライバにしたら、OracleのTypeIIドライバいれないといけなくなっちゃいます。
ゴン太
常連さん
会議室デビュー日: 2003/11/08
投稿数: 20
投稿日時: 2004-01-09 18:44

引用:

skulkerさんの書き込み (2004-01-09 09:41) より:
・DDでリソース参照を指定せず、アプリケーションからいきなりjdbc/XXXのグローバルJNDI名でlookupしても動作には特に問題ないようですが、アプリケーションからはローカル参照(java:comp/env/XXX)を指定し、DDでグローバル名と紐付けるのが推奨されてます。




skulkerさんのアドバイスを参考に、実行してみたのですが、
やはりエラーとなりました。
実行の設定は以下のとおりです。


【web.xml】
 <resource-ref>
   <res-ref-name>jdbc/xxxOracle</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
 </resource-ref>


【データソース】
   名前  :xxxDataSource
   JNDI名 :jdbc/xxxOracle
   コンポーネント管理認証エイリアス
       :<ホスト名>/xxxAlias
   インプリメンテーション・クラス名
       :oracle.jdbc.pool.OracleConnectionPoolDataSource


【WebSphereアプリのインストール時に
   リソース参照をリソースにマップする設定(ステップ 2)】

   既存のリソース JNDI 名を指定:<ホスト名>:jdbc/xxxOracle
   参照バインディング     :jdbc/xxxOracle
   JNDI名           :jdbc/xxxOracle



この設定で、アプリより
  Hashtable param=new Hashtable();
  param.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.ibm.websphere.naming.WsnInitialContextFactory");
  InitialContext ic = new InitialContext(param);
  _ds = (DataSource)ic.lookup("xxxDataSource");
と実行しました。


System.outログを見ると、サーバー起動時に、
「ResourceMgrIm I WSVR0049I:
xxxDataSource を jdbc/xxxOracle としてバインドしています」


Lookup時に
javax.naming.NameNotFoundException: xxxDataSource
at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup
                   (CNContextImpl.java:1503)
at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup
                   (CNContextImpl.java:1457)
at com.ibm.ws.naming.jndicos.CNContextImpl.lookup
                   (CNContextImpl.java:1167)

というエラーが発生しておりました。

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-01-09 19:00
引用:

ゴン太さんの書き込み (2004-01-09 18:44) より:
  _ds = (DataSource)ic.lookup("xxxDataSource");



ではなくて、
  _ds = (DataSource)ic.lookup("java:comp/env/jdbc/xxxDataSource");
では?
ゴン太
常連さん
会議室デビュー日: 2003/11/08
投稿数: 20
投稿日時: 2004-01-09 21:16
引用:

ukさんの書き込み (2004-01-09 19:00) より:
  _ds = (DataSource)ic.lookup("java:comp/env/jdbc/xxxDataSource");
では?



に変更して、試みましたが・・・。

javax.naming.NameNotFoundException: Name "comp/env/jdbc/xxxDataSource" not found in context "java:".
at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1003)
at com.ibm.ws.naming.urlbase.UrlContext.lookup(UrlContext.java:1211)

というエラーが返されました。
プリンス
ベテラン
会議室デビュー日: 2003/07/05
投稿数: 78
お住まい・勤務地: 神奈川
投稿日時: 2004-01-09 22:21
引用:

ukさんの書き込み (2004-01-09 19:00) より:
引用:

ゴン太さんの書き込み (2004-01-09 18:44) より:
  _ds = (DataSource)ic.lookup("xxxDataSource");



ではなくて、
  _ds = (DataSource)ic.lookup("java:comp/env/jdbc/xxxDataSource");
では?



ではなくて
_ds = (DataSource)ic.lookup("java:comp/env/jdbc/xxxOracle");
ですよ。
java:com/envはAPサーバ非依存の内部名ですから、
web.xmlの<res-ref-name>のところとバインドされます。

<resource-ref>
   <res-ref-name>jdbc/xxxOracle</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>
その後、デプロイするときにAPサーバによって、JNDI名にバインドされます。
ゴン太さんの設定ですと、

   JNDI名 :jdbc/xxxOracle

になります。
名前が同じで紛らわしいので、

   JNDI名 :jdbc/yyyOracle

として名前を変えたほうが問題の切り分けがやりやすいと思います。

また、WAS5.1の場合、WEBで設定できますので、どうせ評価版であるなら、
そちらで試してはどうでしょうか?
今月のDBマガジンに付録が付いてます。
わたしは、WAS5.1 + Oracle8(Thin)で問題なく設定できてます。



ゴン太
常連さん
会議室デビュー日: 2003/11/08
投稿数: 20
投稿日時: 2004-01-09 22:35
えっ!もう、V5.1の評価版が出ているんですか?
製品のサイクルって、早すぎる・・・。

ゴン太
常連さん
会議室デビュー日: 2003/11/08
投稿数: 20
投稿日時: 2004-01-13 12:14
本屋で、今月のDBマガジン(2月号)の付録を見てみましたが、
WASのV5.0と書いてました・・・。
実は中身はV5.1かな〜。

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