問題タブ [grails-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - Grails - フルページキャッシュ
データベースからの情報が必要なページは 1 つだけで、残りのページは静的な小さな Web サイトを作成しています。必要な 1 つのページにデフォルトのフラグメント化されたキャッシュ システムを使用しながら、これらの静的ページにフル ページ キャッシュを実装するにはどうすればよいですか? 可能であれば、すべてのページに同じサイトメッシュ レイアウトを使用したいと考えています。サイトメッシュ レイアウトには静的コンテンツのみが含まれます。
caching - @Cacheable アノテーションを使用してキャッシュするための Grails アプリの grails-cache-ehcache プラグイン
私の状況は、Grails 2.1.2 アプリケーションがあり、キャッシュ プラグインとcache-ehcache プラグインを実装として使用してメソッド レベルのキャッシュを導入したいということです。
私のキャッシュは、次のようにメモリ内に配置されるように構成されています。
私はこのようなメソッドを持っています.int引数のみを取るので、キー生成は問題ではありません:
私の問題は、java.lang.OutOfMemoryError: Java heap space
このメソッドが呼び出されたときに例外が発生したことです。その理由は、ehcache が ObjectGraphWalker と呼ばれるクラスを使用してキャッシュに入れられるオブジェクトのサイズを計算し、オブジェクト グラフを走査してサイズを合計するためです。
ehcache のデバッグ レベルのログを設定したところ、次のような膨大な数の行が表示されます。
それが他のメタクラスにつながるメタクラスの束を横断することは明らかです..
Ehcache には、ここで説明されているこのサイズの計算を構成するメカニズムがあります: http://ehcache.org/documentation/configuration/cache-size#built-in-sizing-computation-and-enforcement
そして最近、バージョン 2.8 (私は 2.8.1 を使用) 以降、この構成用のプログラム API もあり、このライブラリを使用してセットアップできることがわかりました: https://github.com/Terracotta-OSS/ ehcache-sizeofengine
このサイズの Groovy エンジンの実装が参照されており、metaClasses トラバースを解決する必要があります。私はそれを試しましたが、私見では機能しません-その核心はこのフィルターです:
問題は、groovy オブジェクトの metaClass フィールドが MetaClass のインスタンスではないことだと思います。ログにも表示されます。
このような長い説明の後に質問を提起するには、次のようにします。
誰かが同じ問題に遭遇し、何とか解決しましたか?
maven - Grails の更新後にクラス grails.plugin.cache.Cacheable を解決できません
Grails を から2.1.0
にアップグレードしてい2.3.7
ます。Maven ベースのプロジェクトがあります。2.1.0
コマンドはmvn clean install
エラーなしで実行されます。それ2.3.7
は与える:
cache
Grailsプラグインの最新バージョンを試してみ1.1.1
まし2.1.0
たcache 1.0.0
。エラーは同じです。
このファイルがどのようにCacheService.groovy
見えるかを確認したところ、実際にこれら 2 つのインポートがあり、それらが必要なようです。cache
plugin zip が.m2
フォルダーにダウンロードされていることを確認しました。
cache
次のようにプラグインを含めますpom.xml
。
実行grails compile
してもエラーは発生せず、アプリケーションを で実行することもできますgrails run-app
。しかし、以前は機能していたように、Maven で機能するようになるとよいでしょう。これで私を助けてもらえますか?
何が起こっているのかを理解できるようになるかもしれない追加の質問が1つあります.Mavenを使用する場合、依存関係はBuildConfig.groovy
依然として重要ですか? それらを削除する必要がありますか?これは、プロジェクトで維持する依存関係が 2 セットあり、適切なもののように見えないためです。
編集:
BuildConfig.groovy
次のようになります。
しかし、それはMavenビルドにまったく使用されていますか? もしそうなら、なぜプラグインを含める必要があるのpom.xml
ですか?. この冗長性は私を悩ませます。
spring - 通常の Spring Service Bean で Grails Cache Plugin を使用する
標準の @Cacheable Spring アノテーションを使用する別の jar lib に標準の Spring @Service クラスがいくつかあります。Spring ブート プロジェクトで、依存関係を宣言し、CacheManager を構成すると機能します。
私はGrails 3.1プロジェクトで同じことをしようとしましたが、うまくいきません! https://github.com/grails-plugins/grails-cacheで「独自の」 @Cacheable アノテーションを使用する必要があることがわかりました。
http://grails-plugins.github.io/grails-cache/3.0.x/api/grails/plugin/cache/Cacheable.html
回避策として、Grails @Cacheable を使用するためだけにいくつかのサービスをフォークしましたが、それは機能していますが、grails の下で動作するかどうかに関係なく単一の @Service が必要です!
私は何かを誤って設定しました。同じように動作しませんが、それが何であるかわかりません!
この jar lib を spring only と grails プロジェクトの間で共有したいのですが、今のところ、grails-app/services ディレクトリの下でサービス calsses を fork し、'proprietary' @Cacheable アノテーションを使用しない限り、キャッシングを機能させることができません。
プラグインを削除して、Bean とキャッシュを構成しようとしています: /GPsGrails3/grails-app/init/gpsgrails3/Application.groovy に org.springframework.context.annotation.Bean アノテーションを付けます:
grails-app/services ディレクトリの下に signatureService を置きます: /GPsGrails3/grails-app/services/it/finmatica/ifw/impl/SignatureService.groovy
/GPsGrails3/grails-app/conf/spring/resources.groovy で Bean を設定する必要があるかもしれません。
プラグインのバージョン 4 を使用する必要がありますか? 「org.grails.plugins:cache:4.+」をコンパイルします
maven - Grails 2.4.5 エラー net.sf.ehcache.CacheException: javax.management.MalformedObjectNameException 無効な文字 ':' プロパティの値部分
Grails 2.4.5 プロジェクト (完全なスタック トレース) を実行すると、以下のエラーが発生します。
エラーの原因がわかりません。「maven clean/package/install」が成功しました。ただし、「grails compile」を実行すると、cache-ehcache プラグインから非推奨の警告 (以下に示すように) が表示されます。これが、このエラーが発生する理由である可能性があると想定していますが、解決方法はわかりません。
そのプラグインの上位バージョンがあるかどうかを確認してみます。これまでのところ、ほとんどの場合、ネクサス ミラー リポジトリに制限されているため、テストするより高いバージョンを見つけることができませんでした。
pom.xml 内にサンプルの依存関係があります
未解決の問題https://github.com/grails-plugins/grails-cache-ehcache/issues/41によると、これはバグである可能性がありますが、解決策や回避策は提供されていません。
私は Grails 2.2.0 から 2.4.5 へのアップグレードを行っています。適切な hibernate4 ehCache クラスを指すように Datasource.groovy を更新しました。
}
config.groovy:
MalformedObjectNameException: Invalid character ':' in value part of property
プロジェクトは ehcache を構成していないため、キャッシュ プラグインのいくつかのクラスを使用しただけなので、それがどこから来ているのかを理解しようとしています。以下はキャッシュ サービスの実装例です。
GrailsEhCacheCache が IntelliJ で認識され ない GrailsCacheManager が IntelliJ で認識されない
更新: createEHcache に使用されるカスタム ユーティリティ メソッド