問題タブ [infinispan]
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.
infinispan - Infinispan の構成の問題
レプリケーション モードで、infinispan を使用してキャッシュ クラスターをセットアップしようとしています。そして、3台目のコンピューターからこれら2台のラップトップのいずれかのキャッシュにアクセスしたいと思います。(3 台のコンピューターはすべて同じネットワーク上にあります)。
3台目のコンピューターにスタンドアロンのJavaプログラムがあります
このメソッドを実行する前に、Laptop-1 で namedCache2 を構成しました。
しかし、rm.getCache("namedCache2") を実行すると、namedCache2 が構成されていないという例外が発生します。
誰かが何が悪かったのか教えてもらえますか?
java - JGroups レプリケーションを使用した場合の Infinispan と Ehcache の主な違い
私はキャッシングソリューションの概念実証を行っていました。私の要件は、キャッシュを異なるサーバー (キャッシュ クラスター) に複製することです。
いくつかの努力の後、2 つのキャッシング ソリューションを最終候補に挙げました。
- レプリケーション戦略として JGroups を使用する Ehcache
- インフィニスパン
これら 2 つのキャッシング ソリューションに大きな違いはありますか? Infinispan も内部で JGroups を使用しているため、私は本当に混乱しています。
これらのキャッシング ソリューションのいずれかに、他のキャッシング ソリューションよりも大きな利点/欠点/過負荷はありますか? 少なくとも小さなクラスターの場合。
glassfish - Glassfish 3.1.2 と Infinispan 5.1.2
Glassfish 3.1.2 と Infinispan 5.1.2 を使用しています。デフォルトのキャッシュ マネージャーの構成をオーバーライドし、事前にいくつかの名前付きキャッシュを開始したいと考えています。次に、そのキャッシュ マネージャーをステートレス EJB に挿入し、名前キャッシュを使用したいと考えています。私が持っているコード:
構成.java:
CacheBean.java:
EAR を Glassfish サーバーにデプロイすると、次のようになります。
私は何を間違っていますか?
infinispan - Infinispan.xml は必須ですか?
ばかげた質問かもしれません..
スタンドアロンキャッシュを作成するには、「infinispan.xml」は必須ですか、それともプログラムによる構成で回避できますか?
infinispan - リモートサーバーでremotecachemangerを使用してキャッシュを作成する方法はありますか?
Infinispanキャッシュを使用して、2つの異なるサーバーに複製されたキャッシュをセットアップしようとしています。
Node1とNode2は、hotrodサーバーが実行されている2つの物理サーバーです。
私の意図は、リモートクライアント(Node3)からnode1 / node2に(カスタム構成で)キャッシュを作成することです。
Node3で、私は次のことを行おうとしています。
RemoteCacheManager rm = new RemoteCacheManager( "node1ip4address"、portNumber); rm.getCache( "namedcache1"); ---->このメソッドのjavadocによると、
/ ** *キャッシュが定義されている場合は、リモートサーバーから名前付きキャッシュを取得します。*定義されていない場合、キャッシュ名が不足している場合はnullを返します。* /
RemoteCacheManagerのソースコードを確認しました。このクラスには、EmbeddedCacheManagerに存在するようなdefineConfiguration()メソッドがありません。
リモートノードにキャッシュを作成する方法はありますか?
ありがとう、-Venkat
java - JPA を使用する Spring トランザクションは、AfterCompletion フェーズ中に例外をスローします
Spring Framework (3.1) を使用する Web アプリケーションと、Hibernate (4.1.1) に裏打ちされた JPA (2.0) による永続性があります。
Hibernate Search も有効になっています (4.1 RC)。Hibernate の Second Level キャッシュは Infinispan (5.1.3) です。
また、Infinispan を Lucene (3.5) ディレクトリ プロバイダー (Hibernate Search 用) として使用しています。
JTA マネージャーとして Bitronix (2.1.2) を使用して、すべてが XA トランザクション上で実行されます。
で注釈が付けられたメソッドがあり@Transactional
ます。メソッドが終了し、トランザクションがコミットされると、次の例外が発生します。
Hibernate クラス "SynchronizationRegistryImpl" に気付くでしょう。これは一連のjavax.transaction.Synchronization
オブジェクトを保持します。私が考えているのは、Hibernate 自体がこのセットの同期として登録されているということです。そう、
- コミット後、beforeTransactionCompletion と afterTransactionCompletion の 2 つのイベントが発生します。
- beforeTransactionComplete はうまくいきます。
- afterTransactionCompletation が開始され、notifySynchronizationsAfterTransactionCompletion メソッドが呼び出されます。
- このメソッドは、Set の各 Synchronization 要素で afterCompletion を呼び出します。
- セット内のアイテムの 1 つ (最後ではない) は Hibernate アイテムで、クリーンアップを呼び出します。
- このクリーンアップにより、セットが空になります。
- 反復中にセットが消去されたため、ConcurrentModificationException がスローされます。
たぶん、Hibernate を正しく設定していないのでしょう。私の Spring XML は大きすぎてここに置くことができません。幸いなことに、これがなぜ起こっているのかを理解できる人もいます。
コンテキストを確立するための追加データ (役立つ場合とそうでない場合があります):
- 同期セットのその他の項目は、Hibernate Search に属します。
- データベースのデータソースは PostgreSQL です。
- トランザクションには ActiveMQ JMS もあり、最初は Infinispan も XA リソースとして設定されていたため、私は XA を使用しています (現在は JTA 同期にフックしています)。
- Spring セキュリティが有効になっています。
- Hibernate は CMTTransactionFactory によって JTA に接続します。
- PersistenceContext が「トランザクション」なのか「拡張」なのかはわかりませんが、デバッグからは後者のように見えます。
java - Infinispan - インデックス作成によるデータの読み込みが非常に遅い. より速くすることはできますか?
- Java オブジェクトをローカル キャッシュのみのモードで格納するために、Infinispan キャッシュを試しています。
- 両方のキーといくつかのフィールドに対してクエリを実行したい。そのため、Infinispan のクエリ/インデックス モジュールを使用しています。
- インデックス付きフィールドでのルックアップ パフォーマンスは非常に優れています。ただし、すべてのアイテムをキャッシュに読み込むには、インデックスを作成しない場合に比べて膨大な時間がかかります。
- たとえば、約 50k オブジェクトの場合、Infinispan のインデックス作成では、項目をキャッシュにロードするのに 10 分かかりました。索引付けなしで、2 秒しかかかりませんでした。
- インデックス作成後に Infinispan がこれほど遅いのか、それとも私が何かひどく間違ったことをしているのだろうかと思います。
;
caching - インフィニスパンは、デルタ対応オブジェクトから変更を取得する必要があることをどのように認識していますか
私たちは infinispan を使用しており、システムには大きなオブジェクトがあり、トランザクションごとに小さな変更をプッシュする必要があります。このオブジェクトと Delta の DeltaAware インターフェイスを実装しました。私が直面している問題は、変更が他のノードに伝播されず、オブジェクトの初期状態のみが他のノードに伝播されることです。また、デルタおよびコミット メソッドは、DeltaAware を実装するビッグ オブジェクトでは呼び出されません。このオブジェクトを単にキャッシュに入れる以外の場所に登録する必要がありますか?
ありがとう
java - Hibernate Search + Infinispan Directory を使用したトランザクション ACID プロパティ
私は次の設定をしています:
- JPA (2.0) から Hibernate (4.1)
- 第 2 レベルのキャッシュとしての Infinispan (5.1)
- Hibernate に接続された Hibernate Search (4.1)
- Hibernate Search (Lucene) のディレクトリとしての Infinispan
- Infinispan ディレクトリの JDBC CacheStore を接続しました
- エンティティと Lucene ディレクトリの両方を格納する PostgreSQL (9.1) データベース。
- トランザクションマネージャーとしての Bitronix (2.1.2)
- 私は Java EE を使用していませんが、Spring (3.1) を使用しています。
Infinispan as Second Level Cache は問題ありません。回復は必要なく、キャッシュの性質上、独自のトランザクションで変更を読み取ることができます。
ソースコードを何時間も読んだ後、エンティティを更新すると、Hibernate Search は Lucene ディレクトリを更新しませんが、トランザクションの最後に (コミットした場合)、更新したばかりのテキストを検索したいと思いました。同じトランザクション内で、私はできませんか?
さらに、トランザクションの完了後、Hibernate Search は別のスレッドでディレクトリの更新を行います。ディレクトリの更新の 1 つが失敗した場合、Lucene は私のエンティティと一致しなくなりますか? また、更新がディレクトリにディスパッチされる前に何かが発生し、回復が必要になった場合、それらの更新は失われますか?
この「最初の」トランザクションが正常にコミットされたと仮定すると、更新は Infinispan ディレクトリに送信されました。ここで新しいトランザクションが開始されます。誰によって?Lucene には、JMS を使用して更新を送信するオプションがあります。オプションがアクティブ化されているとします。そのため、JMS メッセージは新しいトランザクションを初期化します。
Infinispan は、受信した更新を使用してメモリ ディレクトリを変更しますが、永続的な CacheStore は、コミット後、このトランザクションの完了時に再び更新されます。したがって、jdbc CacheStore の更新中に何かが発生した場合、更新されずに放置される可能性がありますが、Infinispan メモリ ディレクトリにはそれらが適用されます。
私の質問は、私が使用しているすべてのモジュールがトランザクションをサポートし、グローバル トランザクション (XA) への参加もサポートしていることを考えると、真のトランザクション性を実現する方法はあるのでしょうか? 多分私はそれを見ていないだけです。
lucene - Infinispan での Apache Lucene の使用
Lucene で Infinispan を使用すると、Lucene のパフォーマンスが向上しますか? Lucene 自体に含まれる RAM ディレクトリがあります。Infinispan は RAM ディレクトリより優れていますか?