2017-02-23 57 views
0

我們正在將SpinBoot作爲內存數據源使用Infinispan構建應用程序。我們正在經歷是描述Indexing was not enabled on this cache例外:Springboot和infinispan異常

Servlet.service()與路徑的servlet [DispatcherServlet的]上下文[]拋出異常[請求處理失敗;嵌套異常是java.lang.IllegalArgumentException:此緩存未啓用索引。接口org.hibernate.search.spi.SearchIntegrator在註冊表中找不到] java.lang.IllegalArgumentException:此緩存未啓用索引。在org.infinispan.query.impl.ComponentRegistryUtils.getComponent(ComponentRegistryUtils.java:27)〜[infinispan-query-8.2.4.Final.jar:8.2。]中找不到註冊表 中的接口org.hibernate.search.spi.SearchIntegrator。 4.Final] at org.infinispan。org.infinispan.query.impl.ComponentRegistryUtils.getComponent(ComponentRegistryUtils.java:20)〜[infinispan-query-8.2.4.Final.jar:8.2.4.Final] at org.infinispan。 。query.impl.SearchManagerImpl(SearchManagerImpl.java:40)〜[Infinispan的查詢-8.2.4.Final.jar:8.2.4.Final]

我們的配置看起來像以下:

@Bean 
public InfinispanCacheConfigurer cacheConfigurer() { 
return manager -> { 
    final org.infinispan.configuration.cache.Configuration ispnConfig = new ConfigurationBuilder() 
      .clustering() 
      .cacheMode(CacheMode.LOCAL) 
      .indexing() 
       .setProperty("default.directory_provider", "ram") 
       .setProperty("default.indexmanager", "near-real-time") 
       .index(Index.ALL) 
      .build(); 

    manager.defineConfiguration("local-sync-config", ispnConfig); 
}; 

}

,我們正在嘗試存儲實體:

@Indexed 
public class Deal { 
    @Field 
    private Long id; 
    @Field 
    private String counterparty; 
    @Field 
    private String grid; 
    @Field 
    @DateBridge(resolution = Resolution.DAY) 
    private Date startDate; 
    @Field 
    @DateBridge(resolution = Resolution.DAY) 
    private Date endDate; 
    @Field 
    private int position; 
... 
} 

的目標是擁有索引和查詢工作,我們已搜查谷歌沒有運氣。

謝謝!

+2

您應該啓用Infinispan的日誌記錄並檢查它是否使用了您期望的緩存......這將在9.0中更改,但在8.x中,您可以調用getCache(「random-name」),它會創建一個新的緩存基於默認配置,可能沒有啓用索引。 –

回答

1

@Dan似乎是正確的。你能確定,你使用的是正確的緩存?或者至少你能分享一個你用來保存Deal對象的代碼片段嗎?