私は非常にひどくコード化されたJSPサイトでいくつかの作業をしています。 1回のデータベース呼び出しごとに、元のプログラマが開き、データベース接続を閉じます。私はいくつかの新しいデータベース操作を追加していますし、少し上手くやってみたいです(もっと多くのサイトを再構築できるようになると、後になります)。私は、セッションが開始したとき(ログイン後)に単一のデータベース接続を作成し、それをセッションオブジェクトに格納してから、セッションが終了したときにセッションリスナの終わりでそれを閉じることを考えていました。これは健全な戦略ですか?思考?JSPサイトの接続プーリング戦略
答えて
私は(ログイン後)は、セッション開始は、セッションオブジェクトに格納する単一のデータベース接続を作成し、セッションが閉じたときにセッション処理機能のセッションリスナーのエンドでそれを閉じて考えていました。これは健全な戦略ですか?思考?
いいえ。コンテナ管理接続プールデータソースを作成し、webappの起動時にJNDIで取得します。
データソースの作成方法は問題のコンテナによって異なります。例えばTomcat 6.0の場合は、ここで読むことができます:Tomcat JNDI Resources HOW-TO - JDBC Data Sources。たとえばGlassfish 3の場合は、Webベースの管理コンソールhttp://localhost:4848で実行できます。ここで
は、あなたが最終的にJNDIからそれを得ることができる方法は次のとおりです。
DataSource dataSource = (DataSource) new InitialContext().lookup(jndiName);
// ...
あなたがそれにgetConnection()
を呼び出すことができます。 webappの起動時には、たとえばデータベース接続マネージャの静的イニシャライザブロックや、おそらくServletContextListener
にデータソースを取得するだけで十分です。
接続は常に可能な限り最短の範囲で取得して閉じてください。クエリを実行しているtry
ブロック内に取得し、非常に同じtry
ブロックのfinally
で閉じます。接続を必要以上に長く開いたままにしないでください。接続プールはそれらを開いたままにすることに注意します。そのため、パフォーマンスはすでに大幅に向上しています。
あなたのアイデアにコメントしていないので(私はそのようにしていないので、私は確かにわかりません)、私はいつもそれがこのような何かを見たと言います(承認された回答を参照):
あなたのServletContext(またはJSPの用語では「アプリケーションスコープ」)に保存されている Common DBCP's PoolingDataSourceインスタンスを使用手始めにHow to reuse the same connection with a Spring's JdbcTemplate?
。
理想的には、私はSpring(またはGuiceなど)に移行することを検討します。
- 1. 接続プーリングとサイトへのロード
- 2. マイクロサービス用のデータベース接続プール戦略
- 3. JavaのHTTP接続プールでの接続の退避戦略
- 4. H2データベース - 同時接続戦略
- 5. P2サイトのセキュリティ戦略
- 6. スプリング接続プーリング
- 7. 接続プーリングHibernate
- 8. jboss接続プーリング
- 9. eclipselink接続プーリング
- 10. クラウド - 接続プーリング
- 11. PHPの接続プーリング
- 12. VoltDBの接続プーリング
- 13. SQLAlchemy接続、プーリング、SQLite
- 14. ヒステリックと接続プーリング
- 15. Tomcat 7の接続プーリング
- 16. erlangのリーク接続プーリング
- 17. ルビーのデータベース接続プーリング
- 18. サーブレットのJDBC接続プーリング
- 19. PostgreSQL JDBCでの接続プーリング
- 20. インスタンスの接続プーリングとスケーリング
- 21. ODP.Net接続プーリングの動作
- 22. Sitecore 6の接続プーリング
- 23. Postgres Npgsqlの接続プーリング
- 24. SQL Azureでの接続プーリング
- 25. マルチスレッドサービスでのデータベース接続プーリング
- 26. デフォルト戦略の戦略パターン
- 27. Tomcatの接続プーリング、アイドル状態の接続、接続の作成
- 28. Google Cloud永続ディスクバックアップ戦略
- 29. iOS永続ストレージ戦略
- 30. ASP .Net接続プーリングOracle with
春のjdbcTemplateとdbcpのような接続プールです。すべてが多かれ少なかれ自動的に行われます。 – Kevin