- PR -

コネクションの返却

1
投稿者投稿内容
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2003-04-05 13:19
こんにちわ。

Struts 1.0.2 の DataSource を使って JDBC 接続しようと
思っているのですが、getConnection で取得したコネクションを
解放するにはどうすればよいのでしょうか?

DataSource は一種のコネクションプールだと思っているのですが、
やっぱり使った後は解放しないと再利用されないですよね。
con.close() で解放する場合もあるみたいですけど、これは
接続自体が切れてしまったりしないのでしょうか?

//
ayum
常連さん
会議室デビュー日: 2002/03/28
投稿数: 44
お住まい・勤務地: 東京
投稿日時: 2003-04-07 15:27
Strutsはデフォルトの状態だとDataSourceの実装に
org.apache.struts.util.GenericDataSource、
Connectionの実装にorg.apache.struts.util.GenericConnectionを使います。

GenericConnectionのソースコードを見てみると、
close()が呼ばれたときにはコネクションを初期化して
closedというフラグをtrueに設定し、
DataSourceにコネクションを返却する、という動作をしています。
実際にコネクションを閉じる代わりに
「コネクションを閉じました」というフラグを立ててあげて
コネクションをプールに返却してあげてるわけです。

ので、StrutsのDataSourceを使うのであれば
con.close()でいいのではないかなと。
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2003-04-07 22:11
ayum さん
詳しい回答ありがとうございます。
私もソースを見てみます。

ちなみにデフォルトの DataSource を使わない選択肢としては
どのようなものがありますか?
デフォルトのものを使うことによるデメリットはありますか?
1

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