- PR -

weblogicでjndiの利用

投稿者投稿内容
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2004-09-27 15:37
JNDIは利用したことがない初心者なのですが、今回、JNDIを利用してwebアプリケーションからDB(postgre SQL)への接続を行おうと考えています。方法を調べていると、tomcatの場合の方法は見つかったのですが、weblogicの場合の設定ファイル記述方法が見つかりません。
tomcatではweb.xmlとserver.xmlに記述を行うようなのですが、アプリケーションサーバがweblogic7の場合はどのファイルに何の記述をすればよいのか分からないのです。
ちなみにjava言語を使用してまして、プログラム中からは
DataSource datasource = context.lookup("java:comp/env/jdbc/resourcename");
のようにしてデータソースを取得しています。"jdbc/resourcename"の部分を設定ファイルに定義しなくてはならないと思うのですが、どなたか設定方法、若しくは設定方法の調べられるサイトをご存知ないでしょうか。

(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-09-27 16:30
Weblogicの場合は設定ファイル直書きしなくても
consoleからGUIで設定ができますよ。

たぶん接続プールの設定とデータソースの設定を
すればOKかと。
# その時割り当てたJNDI名で検索すれば使える
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-09-27 16:55
WebLogicならオンラインでマニュアルが見られます。
http://edocs.beasys.co.jp/e-docs/wls/docs70/index.html
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2004-09-28 13:32
どうもありがとうございます。コンソールから設定で接続プールの作成から行ってみました。
接続プールが
 名前: MyJDBC Connection Pool
 URL: jdbc:postgresql:test
 ドライバ クラス名: org.postgresql.Driver
 プロパティ:user=dbuser
  password=password
  useUnicode=true
  characterEncoding=Windows-31J
とし、データソースが
 名前: MyJDBC Data Source
 JNDI 名: myjndi
 プール名: MyJDBC Connection Pool
としました。web.xmlには必要かどうか分かりませんでしたが、
 <resource-ref>
  <res-ref-name>jdbc/FAQDataSource</res-ref-name>
  <res-type>javax.sql</res-type>
 <res-auth>Container</res-auth>
  </resource-ref>
という設定を記述しておきました。この設定で実行すると、
 javax.naming.NameNotFoundException: While trying to look up comp/env/myjndi in /app/webapp/project1/3655662.
というエラーが発生し、DBにつなぐことができませんでした。上記の設定はまったく自身も無いのですが、やはり間違ってますでしょうか。JDBCのドライバはpostgresql.jarというjarファイルがあり、libの下にコピーしてあります。
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2004-09-28 13:41
↑失礼しました。上記の
 <res-ref-name>jdbc/FAQDataSource</res-ref-name>
の部分はtomcatでサンプルを動かそうとした際に使っていたときの設定なので
特に意味がないかもしれません。tomcatでもドライバが見つからないようなエラーでまだ動作できてないですが。lib配下にちゃんとpostgresql.jarは入っているんですけど‥
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-09-28 13:44
こんにちわ。

実行というのは、どういうコードで実行したのでしょうか?
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2004-09-28 14:05
Weblogic7.0を使用した場合は
 Context context = new InitialContext();
 dataSource = (DataSource) context.lookup("java:comp/env/myjndi");
 Connection connection = dataSource.getConnection();
 Statement statement = connection.createStatement();
とし、後はsqlを実行するような感じです。
tomcat5.0.28を使用した場合は上記のソース2行目が
 dataSource = (DataSource) context.lookup("java:comp/env/jdbc/FAQDataSource");
となってます。FAQDataSourceというのはサンプルで作ったもので、web.xmlとserver.xmlに設定してあります。tomcatの場合はサンプルが載ってたのでまったく同じコードなのですが、実行すると
java.sql.SQLException: No suitable driver
というエラーなんです。
プリンス
ベテラン
会議室デビュー日: 2003/07/05
投稿数: 78
お住まい・勤務地: 神奈川
投稿日時: 2004-09-28 14:09
J2EEに準拠した、汎用性のある記述方法です。
下記の場合、APサーバがWAS等に変わった場合でもコードの修正が少なくすみます。

config.xmlに下記のような記述があるか確認します。
下記はオラクルの例です。
コード:
    <JDBCConnectionPool CapacityIncrement="2"
        DriverName="oracle.jdbc.driver.OracleDriver" InitialCapacity="4"
        LoginDelaySeconds="1" MaxCapacity="10" Name="oraclePool"
        Password="{3DES}ZmHQ6YC59Tc=" Properties="user=yamada"
        RefreshMinutes="10" ShrinkPeriodMinutes="15"
        ShrinkingEnabled="true" Targets="myserver"
        TestConnectionsOnCreate="true" TestConnectionsOnRelease="true"
        TestConnectionsOnReserve="true" TestTableName="dual" URL="jdbc:oracle:thin:@localhost:1521:orcl"/>
    <JDBCTxDataSource EnableTwoPhaseCommit="false"
        JNDIName="OracleSource" Name="examples-dataSource-oracleXAPool"
        PoolName="oraclePool" Targets="myserver"/>



web.xmlに
コード:
 	<resource-ref>
	  <res-ref-name>jdbc/HogeDataSource</res-ref-name>
	  <res-type>javax.sql.DataSource</res-type>
	  <res-auth>Container</res-auth>
	</resource-ref>



weblogic.xmlに下記を記述。
ここでアプリケーションと、APサーバをマッピングする。
コード:
	<reference-descriptor>
		<resource-description>
			<res-ref-name>jdbc/HogeDataSource</res-ref-name>
			<jndi-name>OracleSource</jndi-name>
		</resource-description>
	</reference-descriptor>  



Javaプログラムから内部参照呼出し。
コード:
DataSource ds = 
(DataSource)this.context.lookup("java:comp/env/jdbc/HogeDataSource");


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