TL:DR 次のエラーが表示されますが、その理由はわかりません。インデックス作成が有効になっており、それを表示する必要があるすべてのクラスパスに SearchFactoryIntegrator があります。
このキャッシュではインデックス作成が有効になっていませんでした。インターフェイス org.hibernate.search.spi.SearchFactoryIntegrator がレジストリに見つかりません
長いバージョン:
- JBoss バージョン: 7.1.1 FINAL
- Infinispan バージョン: 5.16 (問題を解決するために 5.1.2 JBoss 出荷からアップグレード)
- Java バージョン: 1.7
Infinispan キャッシュに対してクエリを実行する簡単なテスト アプリケーションを構築しようとしています。
オブジェクトをキャッシュに正常に追加しています。キャッシュはprivate org.infinispan.Cache<String, Agent> cache;
、エージェントが自分のオブジェクトであるように定義されています。
キャッシュをクエリしようとすると、行から次のエラーが表示されます
SearchManager searchManager = Search.getSearchManager(cache);
17:35:43,873 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/SearchableCacheTest].[Faces Servlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet Faces Servlet threw exception: java.lang.IllegalArgumentException: Indexing was not enabled on this cache. interface org.hibernate.search.spi.SearchFactoryIntegrator not found in registry
at org.infinispan.query.impl.ComponentRegistryUtils.getComponent(ComponentRegistryUtils.java:40) [infinispan-query-5.1.6.FINAL.jar:5.1.6.FINAL]
at org.infinispan.query.SearchManagerImpl.<init>(SearchManagerImpl.java:56) [infinispan-query-5.1.6.FINAL.jar:5.1.6.FINAL]
at org.infinispan.query.Search.getSearchManager(Search.java:39) [infinispan-query-5.1.6.FINAL.jar:5.1.6.FINAL]
重要な部分は
このキャッシュではインデックス作成が有効になっていませんでした。インターフェイス org.hibernate.search.spi.SearchFactoryIntegrator がレジストリに見つかりません
このエラーがcache.getCacheConfiguration().indexing().enabled()
解決される前にtrue
standalone-ha.xml
キャッシュは、 JBossですでに設定されているデフォルトの「クラスタ」キャッシュの修正版です。
<cache-container name="cluster" aliases="ha-partition" default-cache="default" start="EAGER">
<transport lock-timeout="60000"/>
<replicated-cache name="default" mode="SYNC" batching="true" indexing="LOCAL">
<locking isolation="REPEATABLE_READ"/>
<store class="org.infinispan.loaders.file.FileCacheStore" preload="true" passivation="false" fetch-state="true" purge="false">
<property name="location">
/tempCacheIndex
</property>
</store>
</replicated-cache>
</cache-container>
構成されたファイルの場所にインデックスが作成されていることがわかります。有効なブール値を true に解決することは、現在の状態を事実に基づいて表現しているようです。
JBoss で org.infinispan.query モジュールを作成しました。これには以下が含まれます
- avro-1.5.1.jar
- hibernate-commons-annotations-4.0.1.Final.jar
- hibernate-search-engine-4.1.1.Final.jar
- infinispan-query-5.1.6.FINAL.jar
- jackson-core-asl-1.9.2.jar
- jackson-mapper-asl-1.9.2.jar
- ルセンコア-3.5.0.jar
- paranamer-2.3.jar
- slf4j-api-1.6.1.jar
- snappy-java-1.0.4.1.jar
上記はすべて、そのモジュールの module.xml で resource-roots として定義されています。モジュールのmodule.xmlを変更して、モジュールorg.infinispan
に依存するようにしましたorg.infinispan.query
jboss-deployment-structure.xml でこれら両方のモジュールへの依存関係を宣言しました
なぜこれが起こっているのか、そしておそらく解決策を持っている人はいますか?
注:ここに非常によく似た質問がありますが、彼は最終的に失敗し、別のルートを選択しました。