そのような構成を持ってehcacheいます:
<ehcache>
<terracottaConfig url="192.168.1.4:9510"/>
<defaultCache
maxElementsInMemory="50"
eternal="false"
timeToIdleSeconds="20"
timeToLiveSeconds="20"
overflowToDisk="false"
diskPersistent="false"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="foo"
maxElementsInMemory="50000"
eternal="true">
<terracotta />
</cache>
</ehcache>
機能しません。アプリケーションはterracottaサーバーに接続しませんが、起動時に次のような例外がスローされます。
net.sf.ehcache.ObjectExistsException: Cache foo already exists.
デバッグ ログを有効にすると、どこかに読み込まれていることがehcacheわかりません( jar ファイル内のクラスパスにある別のログが読み込まれます)。何が問題になる可能性がありますか?ehcache.xmlehcache.xml
私のgrailsバージョンは2.1.1、ehcache.xmlディレクトリにありgrails-app/confます。
UPDATE 1もう1
つの説明。という名前のキャッシュfooは、参照としてコード内およびコード内で使用されehcache.xmlます (実際には Apache Camel ルートでは to('cache://foo') です。fooコードで名前を変更するとbar(たとえば、ルートは to('cache://bar' のようになります) ) という例外をスローしますCache bar already exists。したがって、例外はehcache.xml構成ファイルからではなく、そのキャッシュを名前で参照するコードから発生します。
UPDATE 2が参照される
キャメル ルート内に 2 つの場所があるため、例外がスローされたcache://fooようです。2 番目の参照に到達すると、その例外がスローされます。したがって、主な質問は、ehcache.xml起動時にアプリケーションに表示されないのはなぜですか? ウォームアップしてcache://foo、将来の使用に備える必要があります。
更新 3
以前は動作していたようgrails 1.3.7です。そして今、それは動作しませんgrails 2.1.1