- - PR -
接続の使いまわしについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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 { ----------------省略---------------------------- |
|
投稿日時: 2004-05-26 23:31
DBCPなどのコネクションプーリングを検討してみてはいかがでしょう。
JNDIデータソースの手引き(DBCPの設定例が記述されてます) |
|
投稿日時: 2004-05-27 00:31
早速、回答ありがとうございます。
最初は、コネクションプーリングを検討していたのですが 敷居が高そうなので諦めていました。 やっぱり、この方法が最良ですか? |
|
投稿日時: 2004-05-27 00:53
PostgresであればConnectionPool対応のDataSourceがはじめからあったような気がします。
DriverManagerではなくそちらからConnectionを取得すれば特に何も考えずにコネクションプールを達成することができるはずです。 ちなみに、ひとつの接続をマルチスレッドで使いまわすと、トランザクションやカーソルの開放などが正しく行われない可能性が出てきますので非常に危険です。 |
|
投稿日時: 2004-05-27 17:31
かずくんさん、Anthyhimeさん有難うございました。
コネクションプールを検討してみます。 |
1
