簡體   English   中英

hibernate 搜索映射器 orm HibernateSearchContextProviderService 問題

[英]hibernate search mapper orm issue with HibernateSearchContextProviderService

我正面臨 hibernate 搜索上下文提供程序的嚴重問題。 我的 hibernate-5.6.7-final 運行良好。 現在我需要為我的實體添加搜索功能。 當我將它部署在 karaf OSGI 上時。 我收到 hibernate HibernateSearchContextProviderService 請求未知服務。 我的例外如下:

>>>> 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)

在 karaf 包上找到 class 命令: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

誰能幫我我需要做什么?

您顯然正在嘗試遷移到 Hibernate 搜索 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需要它(我們放棄對 OSGi 的支持已經快兩年了,你是第一個問這個問題的人)——至少這些是我記得的主要原因。

這並不是說它不能工作,但使它工作所需的工作量是未知的,核心團隊目前還有其他優先事項。

如果您想投票支持 OSGi 和/或與社區一起組織貢獻它,您可以在這里投票或討論: https://hibernate.atlassian.net/browse/HSEARCH-3279

或者,我知道有一些外部項目(不記得名字)提供包裝器,以使設計時沒有考慮到 OSGi 的庫,無論如何都可以在 OSGi 容器中工作。 你可能會在那里找到一個已經存在的包裝器,或者貢獻你自己的。

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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM