我正在使用hibernate搜索并运行如下的MassIndexer:
FullTextEntityManager ftem = Search.getFullTextEntityManager(entityManager);
ftem.createIndexer().startAndWait();
MassIndexer线程中缺少cdi-scope的问题发生在两个地方:
javax.persistence.PostLoad
@PostLoad
void onPostLoad(Object o) {
// cdi-scope aware code
}
org.hibernate.search.bridge.FieldBridge
class MyFieldBridge implements FieldBridge {
public void set(...) {
// cdi-scope aware code
}
}
是否可以使用定义的CDI范围(例如通过Apache Deltaspike)丰富MassIndexer线程?
答案 0 :(得分:0)
我不确定我是否理解正确,但我相信您在字段桥中使用CDI bean,而那些CDI bean的范围既不是“应用程序”也不是“单例”?
据我所知,没有办法自定义群发索引器启动线程的方式,或者围绕群发索引器执行包装自定义代码,所以我认为没有一种明显的方法可以做你想做的事情
如果从API的角度准确了解需要什么,可以在our JIRA instance上打开详细说明的故障单。如果您对某些编码感到满意,我们也热烈欢迎补丁;)
关于非显而易见的解决方案:
另外,您可能想问自己为什么在字段桥中需要非应用程序非单一作用域,考虑到字段桥应该行为相同,无论谁请求执行:您可能不想要每当不同的用户更改它时,要对其进行不同索引的实体......您可能有自己的理由,但最好还是检查这些是非常好的。