問題タブ [ehcache]

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.

0 投票する
1 に答える
4945 参照

hibernate - JBossでのEhCacheの設定

わかりました、これは私を夢中にさせています...

サーバー:JBoss 4.0.5

私はhibernate-service.xmlを持っています。そこには以下が含まれています:

これは、ehcacheのロードと開始に関しては正常に機能しているようですが、次のような厄介なメッセージが表示されます。

警告:構成が見つかりません。クラスパスにあるehcache-failsafe.xmlからehcacheを設定します:jar:file:/C:/jboss-4.0.5.GA/server/default/lib/ehcache-1.6.1.jar!/ehcache-failsafe.xml

最終的なアプリは、次の構造を持つearファイルです。

app.harには、BeanとHibernateマッピング、およびhibernate-service.xmlとhibernate.cfg.xml、およびクラスのルートにあるehcache.xmlが含まれています。

すべて正常に機能し、MDBとWebappは機能しますが、ehcacheを構成できませんでした。構成が正しく指定されていないか、ehcache.xmlが適切な場所にない可能性があります。

0 投票する
1 に答える
1142 参照

hibernate - Hibernate + EhCache、キャッシュが不足し続ける

いくつかのオブジェクトを (マッピング ファイルで) キャッシュ可能に構成しましたが、この特定のオブジェクトで確認できることから、キャッシュがうまく機能していません。

他のオブジェクトでは、反復ごとにヒット カウントが増加していますが、ミス カウントは 0 ですが、このオブジェクトではセッションのたびにミスが発生しています。

何が間違っているのか、いくつかの指針を探しています。

  • バックグラウンドとして、equals と hashCode の実装をチェックしましたが、デバッグでも正しい結果が返されているようです。
  • この特定のオブジェクトは、トップ レベルのオブジェクトだけでなく、他のオブジェクトのコレクションでも使用されます。
0 投票する
1 に答える
6331 参照

java - 同じホスト上の2つのインスタンス間のehcache自動検出(マルチキャスト経由)

同じホストで2つのTomcatインスタンスを実行します。各インスタンスは、RMIレプリケーションを介していくつかのehcacheキャッシュと通信しようとする同じWebアプリケーションを実行します。ehcacheで自動検出構成を使用しているので、どのホストとどのキャッシュを複製するかを明示的に定義する必要はありません。ehcacheインスタンスは、お互いを見つけて通信することはできません。

同じことを試しても、今回は各Tomcatインスタンスを別々のホスト(ボックス)で実行すると、すべてが魅力のように機能します。

インスタンスが同じホスト上にある場合、何か問題が発生していますか、それともマルチキャストによる自動検出ができませんか?

私の構成では、 RMI分散キャッシングのドキュメントに示されているデフォルトを使用しています。

そして、複製したい各キャッシュ領域内には、次のものがあります。

ありがとう

0 投票する
1 に答える
4715 参照

hibernate - Hibernate の第 2 レベルのキャッシュがコミットされたエンティティをキャッシュしない

他のアプリケーションが DB を変更していないことがわかっている場合、Hibernate の第 2 レベル キャッシュ (EHCache を使用しています) で、アプリケーションが DB にコミットされたエンティティをキャッシュできるようにすることができるかどうか疑問に思っています。

私の考えでは、レコード A を更新すると、レコード A の値がわかり、それをキャッシュできるはずです。Terracotta のような JVM クラスタリング システムは、Java 同期ロックを使用する JVM ヒープ メモリに関して、このタイプの動作をサポートします。

Hibernate での EHCache ロック モードの構成

0 投票する
1 に答える
5510 参照

java - キャッシュキーの生成

私はehcacheを使用しています(Grailsプラグイン経由)。オブジェクトをキャッシュに追加するメソッドでは、キーをシリアライズ可能にする必要があるため、一般的な使用法は次のようになります。

(boolean パラメータは、オブジェクトを分散キャッシュまたはローカル キャッシュに追加する必要があるかどうかを示します)

私の質問は、次のような値オブジェクトからキーを生成する方法です。

1 つのアプローチは、hashCode() および equals() メソッドを提供し、hashCode をキーとして使用することです。この場合、Person クラスに Serializable を実装させる必要はありません。

あるいは、単に Person オブジェクト自体をキーとして使用することもできます。equals メソッドと hashCode メソッドを提供する必要があるようですが、Serializable を実装する必要もあります。ただし、Person は Person の別のインスタンスとしか等価にならないため、このアプローチを使用すると衝突の可能性が低くなるように思われます。

ehcache はキーの equals() メソッドを使用して、そのキーがキャッシュに既に存在するかどうかを判断すると仮定していますが、この仮定は正しいですか?

上記で概説したアプローチのいずれかが他のアプローチよりも本質的に優れているか、または私が考慮していない別のアプローチがありますか?

ありがとう、ドン

0 投票する
2 に答える
4504 参照

java - ehcache、memcached、その他のKey-Valueストアへのアクセスを同期する方法は?

get()私の理解では、これらの各メソッドput()はアトミックです。

ただし、ehcacheやmemcachedなどのキャッシュにアクセスするCheckThenActと、競合状態が発生します。

Get()thread1がaを実行し、thread2がaにGet()続いて、Put()を実行する場合、最初Get()の値がによって追加された新しい値を受け取るようにするには、何を同期する必要がありthread2ますか?

0 投票する
1 に答える
1976 参照

scala - Scala で実装された JavaBeans の equals および hashCode メソッドのオーバーライド

iBatis と Java キャッシング ツール ehcache を使用するプロジェクトに取り組んでいますが、Scala でモデル クラスを実装しています。equals メソッドと hashCode メソッドをオーバーライドして、キャッシュでオブジェクトを簡単に管理できるようにする必要があると強く感じています。

scala クラスで必要なプロパティのほとんどは vars であるため、vars に依存し、オブジェクトの比較に効率的な効果的な equals 定義を作成するためのアドバイスが必要です。

コード例をいただければ幸いです。

ありがとう。

0 投票する
1 に答える
1138 参照

java - hibernate で ehcache ブロッキング デコレータを使用する

hibernate で ehcache を使用していますが、ブロッキングまたは SelfPopulating キャッシュを使用して、http://ehcache.org/documentation/constructs-0_5.html#mozTocId722946

大規模な Web ページのレンダリングなど、30 秒かかる高価な操作が必要です。ページは、5 分経過するまで古いとは見なされません。ページは非常に頻繁にヒットし、5 分ごとに 1 分あたり平均 20 回ヒットします。

プログラムでこれを行う必要がありますかhttp://ehcache.org/documentation/cache_decorators.htmlは、そうするための宣言的な (xml での) 方法を示唆していますか?

どうもありがとう

0 投票する
2 に答える
5365 参照

java - 同じキャッシュ領域の複数の再作成を回避する(同時実行性による)

トラフィックの多いWebサイトがあり、休止状態を使用しています。また、ehcacheを使用して、ページの生成に必要ないくつかのエンティティとクエリをキャッシュします。

問題は「並列キャッシュミス」であり、長い説明は、アプリケーションが起動してキャッシュ領域がコールドになると、サイトが多くのユーザーにヒットされているため、各キャッシュ領域に異なるスレッドが何度も(1回だけではなく)入力されることです。同時に。さらに、一部のキャッシュ領域が無効になると、同じ理由で何度も再入力されます。どうすればこれを回避できますか?

hibernate.cache.provider_classに独自の実装を提供することで、1つのエンティティと1つのクエリキャッシュをBlockingCacheに変換できましたが、BlockingCacheのセマンティクスが機能していないようです。最悪の場合でも、BlockingCacheがデッドロック(ブロック)し、アプリケーションが完全にハングすることがあります。スレッドダンプは、get操作でBlockingCacheのミューテックスで処理がブロックされていることを示しています。

それで、問題は、Hibernateがこの種の使用をサポートしているのかということです。

そうでない場合は、本番環境でこの問題をどのように解決しますか?

編集hibernate.cache.provider_classは、 SingletonEhCacheProviderからのコピーペーストであり、start()メソッドの最後(136行目以降)にあるカスタムキャッシュプロバイダーを指します。

このように初期化すると、他の誰かが「foo」という名前のキャッシュに触れる前に、BlockingCacheで装飾します。「foo」はクエリキャッシュであり、「bar」(同じコードですが省略されています)はpojoのエンティティキャッシュです。

編集2:「機能していないようです」は、最初の問題がまだ存在することを意味します。同時実行性のため、キャッシュ「foo」には同じデータが何度も再入力されています。10スレッドのJMeterでサイトにストレスをかけることで、これを検証します。9つのスレッドは、「foo」からのデータを要求してジョブを終了し(クエリを実行し、データをキャッシュに格納する)、最初のスレッドがキャッシュから直接データを取得するまでブロックされると予想されます。

編集3:この問題の別の説明はで見ることができますhttps://forum.hibernate.org/viewtopic.php?f=1&t=964391&start=0ですが、明確な答えはありません。