TL:DR 我收到以下错误,我看不出有什么原因,索引已启用,并且 SearchFactoryIntegrator 位于类路径中,以供所有需要查看它的内容。
未在此缓存上启用索引。在注册表中找不到接口 org.hibernate.search.spi.SearchFactoryIntegrator
长版:
- JBoss 版本:7.1.1 最终版
- Infinispan 版本:5.16(从 JBoss 随附的 5.1.2 升级以尝试解决问题)
- 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
- 杰克逊核心asl-1.9.2.jar
- jackson-mapper-asl-1.9.2.jar
- lucene-core-3.5.0.jar
- 参数-2.3.jar
- slf4j-api-1.6.1.jar
- snappy-java-1.0.4.1.jar
以上所有内容都在该模块的 module.xml 中定义为资源根。我已经修改了模块的 module.xml 以org.infinispan
依赖于模块org.infinispan.query
我已经在我的 jboss-deployment-structure.xml 中声明了对这两个模块的依赖关系
有谁知道为什么会发生这种情况并且可能有解决方案?
注意:这里有一个非常相似的问题,但他最终没有成功并选择了不同的路线。