6

私の場合は次のとおりです。

  • Tomcat(6) を Web サーバーとして使用し、多数の Web アプリケーションを搭載したサーバーを維持する必要があります。これらの Web アプリケーションは、他のユーザーによって維持されています。私たちのサーバーは、Web アプリケーションが表示する必要がある情報を持っている別の部門の DB サーバーに接続しています。適切なプーリング戦略がなければ、サーバーはすぐに惨事に変わりました。

  • プールを全員に紹介したので (私は BoneCP - 0.7 を選択しました)、Tomcat のグローバル JNDI コンテキストにとどまる単一のプールを作成し、全員がそこから接続できるようにします。これで問題は解決するはずです。

私の懸念は、この Pooling を完全に制御するにはどうすればよいですか? いくつかの要件があります。

  • 実行時に DataSource 構成を手動またはプログラムでリロードしたい (必要なときにバックアップ サーバーへの接続を試行します)

  • 時々変更できる接続数 (最小、最大、アイドル接続) を変更する

  • Tomcat を有効にしておくことが望ましい

  • 私は、JMX を使用して情報を接続および取得し、プールをリロードするボタンを備えたアラート システムを構築するつもりです (すべてのプーリング戦略には何らかの回復があることはわかっていますが、他の DB サーバーは定期的にクラッシュするため、接続を手動で再起動します)。やや好ましい)。

私はいくつかの可能な解決策を考えています:

  • グローバル JNDI コンテキストを再起動するように Tomcat に指示する
  • Tomcat に DataSource オブジェクトを再起動するように指示する
  • プールを再起動するように BoneCP に指示し、必要に応じて接続を再作成します
  • Tomcat 自体を再起動する

私の質問は次のとおりです。

  1. Tomcat (およびその他の Web アプリケーション) に影響を与えることなく、上記のソリューションを安全に実行できますか?
  2. 私はこれを気にする必要がありますか?(Tomcatを再起動するだけだと思います)
4

1 に答える 1

2

(なぜ誰かが BoneCP を選ぶのですか?私がこれまでに聞いた BoneCP に関するすべての質問は、投稿者が別の CP に切り替えることによって解決され、すべてが機能します。BoneCP はまだ v1.0 でさえありません。それが次の大きなことだと思います。 . まだ到着していないだけです。)

Tomcat には、Apache commons-dbcp と Tomcat 独自の tomcat-pool ビルトインのサポートが付属しています。Tomcat のドキュメントに従って JNDI 接続プールを構成するだけで完了です。

残念ながら、Tomcat は現在、実行時の DataSource の再ロードをサポートしていません。JMX を介してプロパティを変更できますが、変更は効果がありません。プールを閉じることもできますが、閉じたプールになってしまい、価値がなくなります。

Tomcat の bugzillaに拡張機能を記録することは、おそらく良いことです。

于 2012-12-27T23:08:30.467 に答える