2017-12-22 36 views
7

Tôi định cấu hình Hibernate Search 5.5.5 để sử dụng Infinispan 8.2.2 trên Wildfly 10. Tôi chỉ định cấu hình mô-đun Infinispan trong Wildfly chứ không phải mô-đun Tìm kiếm Hibernate.Định cấu hình tìm kiếm Hibernate với Infinispan và Wildfly

Bên trong persistence.xml tôi đặt cấu hình này:

<property name="hibernate.search.infinispan.cachemanager_jndiname" value="java:jboss/infinispan/container/hibernateSearch" /> 
<property name="wildfly.jpa.hibernate.search.module" value="none" /> 

vì Điều này có vẻ rằng Infinispan được sử dụng, nhưng không tồn tại chỉ số.

Tất cả lưu trữ được cấu hình trong domain.xml như sau:

<cache-container name="hibernateSearch" default-cache="LuceneIndexesData" jndi-name="java:jboss/infinispan/hibernateSearch" statistics-enabled="false"> 
     <replicated-cache name="LuceneIndexesMetadata" mode="ASYNC"> 
      <file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/> 
     </replicated-cache> 
     <replicated-cache name="LuceneIndexesLocking" mode="SYNC"> 
      <file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/> 
     </replicated-cache> 
     <replicated-cache name="LuceneIndexesData" mode="ASYNC"> 
      <file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/> 
     </replicated-cache> 
</cache-container> 

trong JBoss-triển khai-structure.xml:

<module name="org.infinispan" slot="ispn-8.2"/> 
<module name="org.hibernate.search.orm" services="export" /> 

Khi tôi cố gắng chỉ mục tất cả tôi nhận được lỗi này:

UNHANDLED_EXCEPTION: java.lang.IllegalArgumentException: java.lang.Object is not an indexed entity or a subclass of an indexed entity 

Nhưng nếu tôi xóa dòng này:

<property name="wildfly.jpa.hibernate.search.module" value="none" /> 

tôi đã

org.hibernate.search.exception.SearchException: Wrong configuration of directory provider: class org.infinispan.hibernate.search.spi.InfinispanDirectoryProvider does not implement interface org.hibernate.search.store.DirectoryProvider 

Vấn đề có vẻ giống nhau được mô tả ở đây:

https://developer.jboss.org/thread/271789

Nhưng tôi không tìm thấy bất kỳ giải pháp làm việc, và tôi chắc chắn rằng tôi havent một hoặc nhiều phiên bản Infinispan hoặc Hibernate trong classpath của tôi.

Điều gì là sai? :(

Trả lời

2

TLDR; You are having 2 Infinispan versions in your classpath: one in your jboss-deployment-structure.xml and one coming with org.jboss.as.clustering subsystem.

Tuỳ chỉnh Hibernate Tìm kiếm

<property name="wildfly.jpa.hibernate.search.module" value="none" /> chỉ có nghĩa không tự động sử dụng và xuất khẩu máy chủ ứng dụng "tìm kiếm" mô-đun cho ứng dụng của tôi.

Như vậy, <module name="org.hibernate.search.orm" services="export" /> là không cần thiết, nó sẽ được thực hiện tự động ngay sau khi bạn đặt id mô-đun chính xác cho wildfly.jpa.hibernate.search.module thay vì none hoặc chỉ cần xóa thuộc tính để sử dụng mô-đun tìm kiếm mặc định.

Tùy chọn none có sẵn cho các trường hợp, khi bạn không muốn sử dụng mô-đun tìm kiếm mặc định hoặc tùy chỉnh nhưng gói trong ứng dụng của bạn.

Chi tiết WildFly 10 Docs - Using Hibernate Search

Tuỳ chỉnh WildFly Infinispan hệ thống phụ

<module name="org.infinispan" slot="ispn-8.2"/> không nâng cấp WildFly Infinispan hệ thống phụ. Nó chỉ cho phép ứng dụng của bạn trực tiếp sử dụng Infinispan như một thư viện. Cách chính xác sẽ là một trong:

  • Dễ dàng: nâng cấp lên Wildfly 10.1 (Đi kèm với Infinispan 8.2 và Hibernate Search 5.5 theo mặc định)
  • cứng: nâng cấp hoặc sửa đổi org.jboss.as.clustering.infinispan module để sử dụng phiên bản tùy chỉnh Infinispan
  • Absurd: đổ cơ sở hạ tầng bộ nhớ cache được cung cấp với WildFly và sử dụng của bạn kèm riêng và cấu hình bên trong ứng dụng
Các vấn đề liên quan