8

Apache commons-configuration が DataSource からプロパティを読み取ることができることを発見しましたが、それらはキャッシュされません。私のアプリケーションは何度もプロパティを読み取る必要があり、データベースへのアクセスが毎回遅くなります。

カスタム Bean で終わるルートにすべてのメッセージを送信する Camel アプリケーションがあります。これらの Bean はスコープ プロトタイプ (私は OOP を信じています) で作成され、SQL データベースから現在のユーザーに依存するいくつかのプロパティとデータ ソース (プロパティ url/name/etc から読み取る) を読み取る必要があります。受信したメッセージごとに Bean が作成されるため、プロパティが再読み取りされます。残念ながら、プロパティを読み取る場所を自由に選択することはできません。これは、db に書き込むユーザー/プロパティ マネージャーである、私が作成したものではない別のソフトウェア (GUI) があるためです。したがって、そこからプロパティを読み取る必要があります。

代替案を教えていただけますか?

4

1 に答える 1

7

探しているキャッシュ動作と動的更新機能を追加する Netflix Archaius プロジェクトを使用できます。Archaius は Commons Configuration を中心に構築されています。

したがって、DatabaseConfiguration をサブクラス化するのではなく、Commons の AbstractConfiguration を拡張する Archaius の DynamicConfiguration を使用できます。このクラスは、任意のソースをキャッシュし、ポーリング スケジューリング クラスを使用して指定した間隔でプロパティを更新します。

実装する必要がある唯一のクラスは、データベースからデータを取得して Map に配置する PolledConfigurationSource です。かなり単純なはずです。

https://github.com/Netflix/archaius/wiki/Users-Guide

于 2013-03-24T14:26:35.713 に答える