简体   繁体   中英

hibernate search mapper orm issue with HibernateSearchContextProviderService

I am facing a serious problem with hibernate search context provider. My hibernate-5.6.7-final was working perfectly fine. Now I need to add search feature to my entities. When I deployed it on karaf OSGI. i am getting hibernate HibernateSearchContextProviderService unknown service requested. My exception given below:

>>>> Unknown service requested [org.hibernate.search.mapper.orm.mapping.impl.HibernateSearchContextProviderService]

                     System Class   ::  org.hibernate.service.UnknownServiceException

                     Class      ::  org.hibernate.service.internal.AbstractServiceRegistryImpl
                     Method     ::   getService
                     Exception  ::  org.hibernate.service.UnknownServiceExceptionorg.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.search.mapper.orm.mapping.impl.HibernateSearchContextProviderService]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
    at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.getService(SessionFactoryServiceRegistryImpl.java:101)
    at org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils.getServiceOrFail(HibernateOrmUtils.java:132)
    at org.hibernate.search.mapper.orm.mapping.impl.HibernateSearchContextProviderService.get(HibernateSearchContextProviderService.java:27)
    at org.hibernate.search.mapper.orm.Search.createSearchSession(Search.java:129)
    at org.hibernate.search.mapper.orm.Search.session(Search.java:85)
    at de.soco.software.simuspace.suscore.search.manager.impl.SearchManagerImpl.init(SearchManagerImpl.java:176)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:337)
    at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:835)
    at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:591)
    at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:703)
    at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:666)
    at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90)
    at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360)
    at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:190)
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:737)
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:433)
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:298)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)
    at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:45)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)

On karaf bundle find class command: karaf@root()> bundle:find-class HibernateSearchContextProviderService

org.hibernate.search.mapper.orm (235)
org/hibernate/search/mapper/orm/mapping/impl/HibernateSearchContextProviderService.class
org/hibernate/search/mapper/orm/mapping/impl/HibernateSearchContextProviderServiceContributor.class
wrap_file__home_sces117_.m2_repository_org_hibernate_search_hibernate-search-mapper-orm_6.1.4.Final_hibernate-search-mapper-orm-6.1.4.Final.jar (290)
org/hibernate/search/mapper/orm/mapping/impl/HibernateSearchContextProviderService.class
org/hibernate/search/mapper/orm/mapping/impl/HibernateSearchContextProviderServiceContributor.class

Can anyone help me what should i need to do?

You are apparently trying to migrate to Hibernate Search 6.

The Hibernate team stopped investing in OSGi compatibility starting with Hibernate Search 6 (and ORM 6, IIRC) due to the disproportionate amount of maintenance it required, the difficulty of testing it (especially with newer JDK releases) and the relatively small number of users actually needing it (it's been almost two years since we dropped OSGi support, and you're the first one to ask about it) -- those were the main reasons I remember, at least.

That's not to say it cannot work, but the amount of effort necessary to make it work is unknown, and the core team has other priorities at the moment.

If you want to vote for OSGi support and/or organize with the community to contribute it, you can vote for it or discuss it here: https://hibernate.atlassian.net/browse/HSEARCH-3279

Alternatively, I know there are external projects (can't remember the name) out there that provide wrappers to make libraries not designed with OSGi in mind, work in an OSGi container regardless. You may find an already existing wrapper there, or contribute your own.

As to HibernateSearchContextProviderService , I can only say it's added to Hibernate ORM through org.hibernate.search.mapper.orm.mapping.impl.HibernateSearchContextProviderServiceContributor , which is itself supposed to be picked up by Hibernate ORM through the service loader mechanism (see https://github.com/hibernate/hibernate-search/blob/0c0519a6ab5382b6008fdbb038f4484fd753c1e3/mapper/orm/src/main/resources/META-INF/services ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM