- PR -

接続の使いまわしについて

1
投稿者投稿内容
たんぼぼ
会議室デビュー日: 2004/05/26
投稿数: 17
お住まい・勤務地: 東京
投稿日時: 2004-05-26 22:47
WEBアプリケーションを開発中のJAVA初心者です。

ソースコードにあるように、init()で接続を使いまわし出来るように書きましたが、
JavaBeansにデータを受け渡してDBの検索等行った場合や他のサーブレット
に移った時もDB検索もあり、最初のinit()で定義した接続をずっと使いまわすことが出来るのでしょうか?
間違っていたら教えてください。

このWEBアプリケーションは、最大でも同時接続人は30人程度です。


環境、
Linux(REDHAT9)
Tomcat5.0.24
eclipse
DB postgresql

----以下ソースコード---------------

public class Login extends HttpServlet {

Connection conn = null;

public void init() throws ServletException {
try {

Class.forName("org.postgresql.Driver");
Connection conn =
DriverManager.getConnection(
"jdbc:postgresql:******",
"*******",
"*******");



} catch (ClassNotFoundException e) {

} catch (SQLException e) {

}
}

public void destroy() {
try {
conn.close();
} catch (SQLException ex) {

}
}

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

----------------省略----------------------------
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-05-26 23:31
DBCPなどのコネクションプーリングを検討してみてはいかがでしょう。

JNDIデータソースの手引き(DBCPの設定例が記述されてます)
たんぼぼ
会議室デビュー日: 2004/05/26
投稿数: 17
お住まい・勤務地: 東京
投稿日時: 2004-05-27 00:31
早速、回答ありがとうございます。

最初は、コネクションプーリングを検討していたのですが
敷居が高そうなので諦めていました。

やっぱり、この方法が最良ですか?
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-05-27 00:53
PostgresであればConnectionPool対応のDataSourceがはじめからあったような気がします。
DriverManagerではなくそちらからConnectionを取得すれば特に何も考えずにコネクションプールを達成することができるはずです。
ちなみに、ひとつの接続をマルチスレッドで使いまわすと、トランザクションやカーソルの開放などが正しく行われない可能性が出てきますので非常に危険です。
たんぼぼ
会議室デビュー日: 2004/05/26
投稿数: 17
お住まい・勤務地: 東京
投稿日時: 2004-05-27 17:31
かずくんさん、Anthyhimeさん有難うございました。

コネクションプールを検討してみます。
1

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