2013-03-11 8 views
7

私は、ApacheのコモンコンフィグレーションでDataSourceのプロパティを読み取ることができますが、キャッシュしないことを発見しました。私のアプリケーションは多くの時間プロパティを読み取る必要があり、毎回データベースにアクセスするのが遅くなります。データベースからプロパティを読み取るためのApacheのコモンコンフィグレーションの代わりに

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

私に代案を提案できますか?

おかげで、 マリオ

+0

どのようなユースケースですか?データの読み取り頻度、変更頻度、初期の保存場所 – bdares

+0

シンプルなキャッシュを実装できますか?この問題の最後のコメントを参照してください。 https://issues.apache.org/jira/browse/CONFIGURATION-180?focusedCommentId=12491813&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12491813 – longhua

+0

あなたが「残念ながら」提供したリンクは私が適用したくないコモンズへのパッチ。今は、DatabaseConfigurationをサブクラス化できるかどうかを質問します(可能であるはずです) – mgiammarco

答えて

6

あなたが探しているキャッシュの動作だけでなく、動的なリフレッシュ機能を追加NetflixのArchaiusプロジェクトを、使用することができます。 ArchaiusはCommons Configurationを中心に構築されています。

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

実装する必要がある唯一のクラスは、データベースからデータを取得してマップに配置するPolledConfigurationSourceです。かなりシンプルでなければならない。

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

関連する問題