JBoss WildFly 11、Hibernate ORM 5.2、OGM 5.3 和 MongoDB - 未找到 O



通过尝试让Hibernate ORM 5.2与OGM 5.3一起工作,以便我可以将JPA与MongoDB一起使用,进展缓慢。

要删除 OGM 常见问题解答中引用的 JNDI 查找错误,请执行以下操作:

在WildFly上使用Hibernate OGM时,我得到了一个 JndiException.怎么了?如果您看到 JndiException 说"无法查找 JNDI 名称 [---占位符DSForOGM---]",您的 应用程序可能无法访问 的应用程序服务器模块 休眠 OGM。

若要更改此设置,请将以下行添加到 META-INF/MANIFEST。中频 存档文件(对其进行调整以匹配您选择的数据存储):

Dependencies: org.hibernate:ogmservices, org.hibernate.ogm.mongodb 服务 或者,您可以通过描述符进行配置。 jboss-deployment-structure.xml. 请参阅参考指南以了解更多信息。

我创建了:jboss-deployment-structure.xml

含:

<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.hibernate.ogm" slot="5.3" services="export" />
<module name="org.hibernate.ogm.mongodb" slot="5.3" services="export" />
</dependencies>
</deployment>
</jboss-deployment-structure>

现在,当我尝试通过 WildFly 11 控制台部署我的 EAR 时,我得到:

17:58:42,921 错误 [org.jboss.msc.service.fail] (服务器服务线程 池 -- 65) MSC000001:无法启动服务 jboss.persistenceunit."NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: org.jboss.msc.service.StartException in service jboss.persistenceunit."NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not find at org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1$1.run(PhaseOnePersistenceUnitServiceImpl.java:128) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1$1.run(PhaseOnePersistenceUnitServiceImpl.java:104) 在 org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:640) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1.run(PhaseOnePersistenceUnitServiceImpl.java:137) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jboss.threads.JBossThread.run(JBossThread.java:320) 由以下原因引起: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not find 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:372) at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) at java.util.ServiceLoader$1.next(ServiceLoader.java:480) at org.hibernate.boot.registry.classload.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:459) 在 org.hibernate.integrator.internal.IntegratorServiceImpl.(集成商服务.java:40) 在 org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:224) 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.buildBootstrapServiceRegistry(EntityManagerFactoryBuilderImpl.java:406) 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(实体经理工厂建设者Impl.java:196) 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(实体经理工厂建设者Impl.java:164) 在 org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:32) 在 org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:89) 在 org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.(TwoPhaseBootstrapImpl.java:39) 在 org.jboss.as.jpa.hibernate5.HibernatePersistenceProviderAdaptor.getBootstrap(HibernatePersistenceProviderAdaptor.java:199) 在 org.wildfly.jpa.hibernateogm5.HibernateOGMPersistenceProviderAdaptor.getBootstrap(HibernateOGMPersistenceProviderAdaptor.java:87) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl.createContainerEntityManagerFactoryBuilder(PhaseOnePersistenceUnitServiceImpl.java:254) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl.access$900(PhaseOnePersistenceUnitServiceImpl.java:59) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1$1.run(PhaseOnePersistenceUnitServiceImpl.java:125) ...7 更多

17:58:42,926 错误 [org.jboss.as.controller.management-operation] (外部管理请求线程 -- 1)WFLYCTL0013:操作 ("添加") 失败 - 地址: ([("部署" => "NOTiFYwell.ear")]) - failure description: {"WFLYCTL0080: Failed services" =>{"jboss.persistenceunit.\"NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit\".FIRST_PHASE"=> "java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found 由以下原因引起:java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found"}} 17:58:42,927 错误 [org.jboss.as.server] (外部管理请求线程 -- 1) WFLYSRV0021:部署"NOTiFYwell.ear"的部署被回滚 显示以下失败消息:{"WFLYCTL0080:失败的服务" => {"jboss.persistenceunit.\"NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit\".FIRST_PHASE" => "java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found 由以下原因引起:java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found"}} 17:58:42,939 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) WFLYSRV0208:停止的子部署(运行时名称:NOTiFYwellJAR.jar) 在 10ms 17:58:42,942 INFO [org.jboss.as.server.deployment] (MSC 服务线程 1-8) WFLYSRV0208:已停止的子部署(运行时名称: NOTiFYwellWAR.war) 在 13ms 17:58:42,952 信息 [org.jboss.as.server.deployment] (MSC 服务线程 1-8)WFLYSRV0028: 在 中停止部署 NOTiFYwell.ear(运行时名称:NOTiFYwell.ear) 25毫秒

错误:

Provider org.hibernate.ogm.service.impl.OgmIntegrator not found

指在以下位置找到的类 OgmIntegrator

org/hibernate/ogm/service/impl/OgmIntegrator.class under /usr/local/Cellar/wildfly-as/11.0.0.Final/libexec/modules/system/layers/base/org/hibernate/ogm/5.3/hibernate-ogm-core-5.3.0.Final.jar

知道为什么没有加载它吗?蒂亚

我想我想我想出了问题所在,你需要使用它:

<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.hibernate.ogm" slot="5.3" services="export" />
<module name="org.hibernate.ogm.mongodb" slot="5.3" services="export" />
</dependencies>
</deployment>
</jboss-deployment-structure>

此例外

org.jboss.modules.ModuleNotFoundException: org.hibernate:5.3

表示您使用的是 org.hibernate:5.3而不是org.hibernate.ogm:5.3

错误可能位于 jboss-deploy 描述符或清单中。中频。只要确保您只使用其中一个即可。

更新:Hibernate网站常见问题解答会话中出现错误,我对其进行了更新。感谢您的反馈。

终于部署了 EAR。

它仅在我包含清单时才部署 EAR。EAR 元信息中的 MF

Manifest-Version: 1.0
Dependencies: org.hibernate.ogm:5.3 services, org.hibernate.ogm.mongodb:5.3 services

删除"jboss-deployment-structure.xml"。

如果我尝试使用"jboss-deployment-structure.xml"(空清单):

<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.hibernate.ogm" slot="5.3" services="export" />
<module name="org.hibernate.ogm.mongodb" slot="5.3" services="export" />
</dependencies>
</deployment>
</jboss-deployment-structure>

它无法部署,并出现我之前遇到的错误:

17:31:53,892 错误 [org.jboss.msc.service.fail] (服务器服务线程 池 -- 30) MSC000001:无法启动服务 jboss.persistenceunit."NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: org.jboss.msc.service.StartException in service jboss.persistenceunit."NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not find at org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1$1.run(PhaseOnePersistenceUnitServiceImpl.java:128) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1$1.run(PhaseOnePersistenceUnitServiceImpl.java:104) 在 org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:640) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1.run(PhaseOnePersistenceUnitServiceImpl.java:137) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jboss.threads.JBossThread.run(JBossThread.java:320) 由以下原因引起: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not find 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:372) at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) at java.util.ServiceLoader$1.next(ServiceLoader.java:480) at org.hibernate.boot.registry.classload.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:459) 在 org.hibernate.integrator.internal.IntegratorServiceImpl.(集成商服务.java:40) 在 org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:224) 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.buildBootstrapServiceRegistry(EntityManagerFactoryBuilderImpl.java:406) 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(实体经理工厂建设者Impl.java:196) 在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(实体经理工厂建设者Impl.java:164) 在 org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:32) 在 org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:89) 在 org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.(TwoPhaseBootstrapImpl.java:39) 在 org.jboss.as.jpa.hibernate5.HibernatePersistenceProviderAdaptor.getBootstrap(HibernatePersistenceProviderAdaptor.java:199) 在 org.wildfly.jpa.hibernateogm5.HibernateOGMPersistenceProviderAdaptor.getBootstrap(HibernateOGMPersistenceProviderAdaptor.java:87) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl.createContainerEntityManagerFactoryBuilder(PhaseOnePersistenceUnitServiceImpl.java:254) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl.access$900(PhaseOnePersistenceUnitServiceImpl.java:59) 在 org.jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1$1.run(PhaseOnePersistenceUnitServiceImpl.java:125) ...7 更多

17:31:53,908 错误 [org.jboss.as.controller.management-operation] (外部管理请求线程 -- 3)WFLYCTL0013:操作 ("添加") 失败 - 地址: ([("部署" => "NOTiFYwell.ear")]) - failure description: {"WFLYCTL0080: Failed services" =>{"jboss.persistenceunit.\"NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit\".FIRST_PHASE" => "java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found 由以下原因引起:java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found"}} 17:31:53,909 错误 [org.jboss.as.server] (外部管理请求线程 -- 3) WFLYSRV0021:部署"NOTiFYwell.ear"的部署被回滚 显示以下失败消息:{"WFLYCTL0080:失败的服务" => {"jboss.persistenceunit.\"NOTiFYwell.ear/NOTiFYwellJAR.jar#NOTiFYwellMongoDBPersistenceUnit\".FIRST_PHASE" => "java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found 由以下原因引起:java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.ogm.service.impl.OgmIntegrator not found"}}

将一个enity映射到我的MongoDB表,并能够返回实体的"列表"。

必须确保集合的 id 类型映射为:

@Id @Type(类型 = "objectid") 私有字符串 ID;

最新更新