複数のデータソースを持つマルチテナントアプリケーションがあり、データプールプロパティ(maxActive、minIdleなど)を個別に設定する必要があります。Tomcatプールプロパティを動的に設定する
は現在、私はorg.apache.tomcat.jdbc.pool.DataSource
を構築することだし、dataSource.setUserName()
とdataSource.setPassword()
を使用して手動でユーザー名やパスワードなどいくつかのプロパティを設定します。私は、文字列から設定をロードすることによって残りのプロパティを設定したいと考えています。例えば、minIdle=20;initialSize=15
です。
DataSource
には2つの方法がありますが、これは実現するように見えますが、私が期待しているようには見えません。いくつかのプロパティを持つdataSource.setConnectionProperties("..")
と、Properties
オブジェクトを設定してdataSource.setDbProperties()
に渡しましたが、どちらもJMXを通じてプール属性を表示しても効果がなかったようです。私はdataSource.setInitialSize()
のような特定のセッターを介してのみこれらのプロパティを変更することができました。
上記の試みを行わずに各プロパティを文字列から設定する唯一の方法は、各プロパティを繰り返し実行し、if-elseまたはswitch-caseロジックを使用して値を設定するために呼び出すdataSourceのセッター。
個々のセッターを呼び出さずに文字列からこれらのプロパティを動的に設定する方法はありますか?私はどちらかsetConnectionProperties
またはsetDbProperties
のユーザ名を設定
は、それが変更をしましたが、私は、これは私が効果を持っていなかった設定しようとした他の特性として、ユーザー名とパスワードのようなものに特異的であってもよいと思います。
編集:明確にするために、データソースのプロパティがデータベースからロードされ、新しいデータソースがオンザフライで追加される可能性があるため、アプリケーションプロパティの使用は機能しません。