2016-07-25 18 views
0

簡単に言えば、Apache JCSを使用して独自のオブジェクトを管理するライブラリを作成しました。を使用すると、ファイルから設定を読み込み、キャッシュマネージャにロードされ、テストアプリケーションでライブラリをテストするとうまく動作します。ライブラリで使用するときにApache JCSキャッシュのコンフリクトを作成する

私の実際のアプリケーションでは、JCSもアプリケーション関連のオブジェクトを管理するために使用されています。問題が発生する場所です。

アプリケーションが起動すると、まずアプリケーションキャッシュマネージャがインスタンス化され、すべての設定が正常にロードされ、意図したとおりに作成されます。

しかし、ライブラリのキャッシュマネージャでは、私の設定はまったく使用されず、いくつかのデフォルトのキャッシュインスタンスをインスタンス化すると聞こえます。例えば、私が持っている私のライブラリの設定で:それは、関連する設定を使用していない示した証拠がある

jcs.auxiliary.DCACHE=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory 
jcs.auxiliary.DCACHE.attributes=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes 
jcs.auxiliary.DCACHE.attributes.DiskPath=LIB_DATA_DIR 
jcs.auxiliary.DCACHE.attributes.MaxPurgatorySize=10000 
jcs.auxiliary.DCACHE.attributes.MaxKeySize=10000 
jcs.auxiliary.DCACHE.attributes.OptimizeAtRemoveCount=300000 
jcs.auxiliary.DCACHE.attributes.MaxRecycleBinSize=7500 

: それはSWAPとでmyRegionのDiskUsagePatternを作成

jcs.region.MYREGION=DCACHE 
jcs.region.MYREGION.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes 
jcs.region.MYREGION.cacheattributes.MaxObjects=1200 
jcs.region.MYREGION.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache 
jcs.region.MYREGION.cacheattributes.DiskUsagePattern=UPDATE 

DCHACHEの補助は、以下のように定義されます(私もDiskUsagePatternNameを試しましたが、違いはありません)。

DislockPathとしてLIB_DATA_DIRは使用されません。その代わりに、私はすでにApplicationの設定用に定義したものを使用します。

私がアプリケーションのJCS関連コードにコメントすると、それはライブラリのJCSでうまく機能します。

私もJCS.getInstance( "cache_name")を試しましたが、違いはありません。

皆さん、ありがとうございますか?

答えて

0

問題を掘り起こすと、JCSは分離された設定ファイルを扱うのが難しいと考えました。 JCSは、Java仮想マシンごとに設定ファイルを使用して1回だけ設定できます。

私はJCSの設定に1つのファイルを使用することになりました。このようにして、アプリケーションがJCSファーをインスタンス化すると、ライブラリーの構成もロードされ、後でライブラリー内のすべてがうまく機能します。

関連する問題