As stated you need to add the lines below to your persistence.xml
<property name="jboss.as.jpa.providerModule" value="org.hibernate:5.3" />
<property name="wildfly.jpa.hibernate.search.module" value="org.hibernate.search.orm:5.10.3.Final" />
Then you need to create a file named server-provisioning.xml in your project's root folder:
<server-provisioning xmlns="urn:wildfly:server-provisioning:1.1" copy-module-artifacts="true">And finally in your pom.xml file add the plugin below:
<feature-packs>
<feature-pack
groupId="org.hibernate"
artifactId="hibernate-search-jbossmodules-orm"
version="5.10.3.Final"/>
<feature-pack groupId="org.hibernate"
artifactId="hibernate-search-jbossmodules-elasticsearch" version="5.10.3.Final" />
<feature-pack
groupId="org.wildfly"
artifactId="wildfly-feature-pack"
version="13.0.0.Final" />
</feature-packs>
</server-provisioning>
<plugin>It should create a new folder in your target's directory named wildfly-with-updated-hibernate-search. And you should re-configure this server for your needs: datasource, mail, cache, etc. Make sure that it contains the jar files inside modules folder. The setting above copy-module-artifacts="true" should do it, notice that in the hibernate-search documentation, this property is not initialized. Thus, I spent some hours how to obtain the jars (I even downloaded some :-)).
<groupId>org.wildfly.build</groupId>
<artifactId>wildfly-server-provisioning-maven-plugin</artifactId>
<version>1.2.6.Final</version>
<executions>
<execution>
<id>server-provisioning</id>
<goals>
<goal>build</goal>
</goals>
<phase>compile</phase>
<configuration>
<config-file>server-provisioning.xml</config-file>
<server-name>wildfly-with-updated-hibernate-search</server-name>
</configuration>
</execution>
</executions>
</plugin>
It works for a basic requirement, but I still found some errors though like:
Caused by: java.lang.NoClassDefFoundError: javax/persistence/TableGeneratorsWhich should be solved by adding:
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
But that does not solve the issue so I added the -Dee8.preview.mode=true parameter and that did the trick.
Well, you may just want to wait for the release of Wildfly14.
Changes for Elasticsearch
In your project dependency add:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-elasticsearch</artifactId>
<version>5.10.3.Final</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.2.3</version>
</dependency>
Make some minor tweaks to persistence.xml
<property name="hibernate.search.default.indexmanager" value="elasticsearch" />
<property name="hibernate.search.default.elasticsearch.host" value="http://127.0.0.1:9200" />
<property name="hibernate.search.default.elasticsearch.index_schema_management_strategy" value="CREATE" />
Run elasticsearch in docker https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html. Make sure that the status of your elasticsearch server is green. See docker-compose.yml in the project mentioned below.
Run your application. You should be able to see logs in elasticsearch that verifieds the data posted.
You may want to check the complete code accessible at https://github.com/czetsuya/hibernate-search-demo. Switch to latest-hibernate-search branch.
Note:
- There are 3 errors with the elasticsearch integration related to JSON.
- If you want to try lucene, just modify the configuration in test-persistence.xml.
You may also want to check:
0 nhận xét:
Đăng nhận xét