2016-06-20 6 views
2

Dies ist ein Maven-Projekt mit Hibernate Search. Das Servlet funktioniert perfekt auf Wildfly 9.Hibernate Search beginnt mit Wildfly 9 aber nicht Wildfly 10

Sobald ich es auf Wildfly 10, starten bekomme ich einen Absturz bei der Frühling die Bohnen autowires:

ERROR [ContextLoader]:351 - Context initialization failed 
nested exception is java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.search.hcore.impl.HibernateSearchIntegrator not a subtype 
[...] 
Caused by: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.search.hcore.impl.HibernateSearchIntegrator not a subtype 
    at java.util.ServiceLoader.fail(ServiceLoader.java:239) 
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185) 
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376) 
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) 
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480) 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:341) 
    at org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(IntegratorServiceImpl.java:57) 
    at org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:247) 
    at org.hibernate.boot.registry.StandardServiceRegistryBuilder.<init>(StandardServiceRegistryBuilder.java:73) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1915) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 

ich andere Version der deklarierten Bibliotheken ohne Erfolg versucht.

<spring.version>4.2.6.RELEASE</spring.version> 
    <spring.boot.version>1.3.5.RELEASE</spring.boot.version> 
    <lucene.version>4.10.4</lucene.version> 
    <hibernate-search-orm.version>5.3.0.Final</hibernate-search-orm.version> 
    <solr-core.version>4.10.4</solr-core.version> 

Wer hat eine Idee von dem, was vor sich geht?

+0

Wie haben Sie dieses Problem behoben? – Gazeciarz

Antwort

4

Sowohl Hibernate ORM und Hibernate Search sind in Wildfly seit Version 8.

Ein bemerkenswerter Unterschied in Wildfly 10 im Vergleich zu Wildfly 9 ist, dass Hibernate Search wird automatisch Ihren Classpath hinzugefügt werden, wenn seine Verwendung wird erkannt. Das wird deine WAR-Dateien kleiner machen und die neuesten stabilen Versionen verwenden. Daher ist es der Ansatz, den ich empfehlen würde (obwohl ich kein Spring-Benutzer bin - würde es gerne hören, wenn es die Spring-Benutzer etwas schwieriger macht . Hibernate Foren)

Die Detektionsregel ausgelöst wird, wenn beide:

  1. Sie verwenden Hibernate als Persistenz-Provider Implementierung
  2. Jede Ihrer Einheiten kommentierten mit @Indexed

so Ich vermute, Ihre beste Lösung besteht darin, sicherzustellen, dass Sie in Ihrer Bereitstellung weder Hibernate ORM noch Hibernate Search verwenden, um Konflikte zu vermeiden.

Wenn Sie lieber Ihre eigene Version der Frameworks verwenden möchten, können Sie die folgende Eigenschaft festlegen, um diese Abhängigkeiten entweder nicht zu injizieren (also die Bibliotheken zu verwenden, die Sie in Ihrer Anwendung bündeln) oder benutzerdefinierte Pakete zu paketieren Versionen von diesen in WildFly-Modulen und verwenden Sie die alternative Version (Sie können alternative Versionen mit einer anderen "Slot" -Kennung haben).

wildfly.jpa.hibernate.search.module = none 

Diese Eigenschaft muss in Ihrem persistence.xml definiert werden.

Siehe auch die WildFly 10 JPA Reference Guide für eine vollständige Beschreibung dieser und ähnlicher Eigenschaften.

+0

Vielen Dank für Ihre Antwort Sanne. Welches Maven-Paket sollte ich verwenden, um org.hibernate.search.annotations zu haben, aber nicht das gesamte ORM? Ich habe auch keine "persistence.xml", da alles über Spring-Beans konfiguriert ist, habe ich versucht, die Eigenschaft dort ohne Glück hinzuzufügen. –

+0

Ich habe versucht, die Hibernate-Suche auf den Bereich zu beschränken, habe versucht, eine persistence.xml mit der Eigenschaft zu erstellen, habe verschiedene Maven-Konfigurationen ausprobiert ... habe eine ganze Stunde damit gekämpft, immer noch kein Glück. Die Ausnahme kommt immer wieder. –

+0

Das Paket 'org.hibernate.search.annotations' ist Teil des Maven-Artefakts' org.hibernate: hibernate-search-engine' (nicht sicher, wie das aber aussieht). – Sanne