JBoss WildFly 11, Hibernate ORM 5.2, OGM 5.3 и MongoDB - OgmIntegrator не найден
Медленно продвигается, пытаясь заставить Hibernate ORM 5.2 работать с OGM 5.3, чтобы я мог использовать JPA с MongoDB.
Чтобы удалить ошибку поиска JNDI, указанную в разделе часто задаваемых вопросов OGM:
При использовании Hibernate OGM поверх WildFly, я получаю JndiException. В чем дело? В случае, если вы видите исключение JndiException, говорящее "Невозможно найти имя JNDI [---PlaceHolderDSForOGM---]", ваше приложение, скорее всего, не сможет получить доступ к модулю (ам) сервера приложений Hibernate OGM.
Чтобы изменить это, добавьте следующую строку в файл META-INF/MANIFEST.MF вашего архива (измените его в соответствии с выбранным хранилищем данных):
Зависимости: org.hibernate:ogm services, org.hibernate.ogm.mongodb services Альтернативно, вы можете настроить это через дескриптор jboss-deploy-structure.xml. См. Справочное руководство, чтобы узнать больше.
Я создал: jboss-deploy-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>
Теперь, когда я пытаюсь развернуть EAR через консоль WildFly 11, я получаю:
17: 58: 42,921 ОШИБКА [org.jboss.msc.service.fail] (Пул потоков ServerService - 65) MSC000001: Не удалось запустить службу jboss.persistenceunit. "NOTiFYwell.ear / NOTiFYwellJAR.jar # NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: org.jboss.msc.service.StartException в службе jboss.persistenceunit. "NOTiFYwell.ear / NOTiFYwellJAR.jar # NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден в org.jboss.as.jpa.service.PhaseOneSer 0 jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1.run(PhaseOnePersistenceUnitServiceImpl.java:137) в java.util.concurrent.ThreadPoolExecutor.runWorker(поток.java:617) в java.lang.Thread.run(Thread.java:745) в org.jboss.threads.JBossThread.run(JBossThread.java:320). Причина: java.util.ServiceConfigurationError: org.hibernate. integrator.spi.Integrator: поставщик org.hibernate.ogm.service.impl.OgmIn Тегератор не найден в java.util.ServiceLoader.fail(ServiceLoader.java:239) в java.util.ServiceLoader.access$300(ServiceLoader.java:185) в java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.j:) в java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) в java.util.ServiceLoader$1.next(ServiceLoader.java:480) в org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImp (ClassLoaderServiceImpl.java:459) по адресу org.hibernate.integrator.internal.IntegratorServiceImpl.(IntegratorServiceImpl.java:40) по адресу org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(Bootstragjg2).boot.internal.EntityManagerFactoryBuilderImpl.buildBootstrapServiceRegistry(EntityManagerFactoryBuilderImpl.java:406) при org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:196) при org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) в org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:32) в org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerjgattb0).jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.(TwoPhaseBootstrapImpl.java:39) в org.jboss.as.jpa.hibernate5.HibernatePersistenceProviderAdaptor.getBootstrap(HibernatePersistenceProvider.Hap 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) at 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")]) - описание ошибки: {"WFLYCTL0080: сбойные службы "=> {" jboss.persistenceunit. \ "NOTiFYwell.ear / NOTiFYwellJAR.jar # NOTiFYwellMongoDBPersistenceUnit \".FIRST_PHASE"=>" java.ufr org.hibernate.integrator.spi.Integrator: поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден Причина: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: поставщик org.hibernate.og. service.impl.OgmIntegrator не найден "}} 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: поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден Причина: java.util.ServiceConfigurationError: org.hibernate.integratorspi Поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден "}} 17:58:42,939 INFO [org.jboss.as.server.deployment] (поток службы MSC 1-7) WFLYSRV0208: остановлено вложенное развертывание (имя-среды выполнения: NOTiFYwellJAR.jar) в 10мс 17:58:42,942 ИНФОРМАЦИЯ [org.jboss.as.server.deployment] (служебный поток MSC 1-8) WFLYSRV0208: остановленное подразделение (имя-среды выполнения: NOTiFYwellWAR.war) в 13 мс 17:58:42,952 INFO [org.jboss.as.server.deployment] (поток службы MSC 1-8) WFLYSRV0028: Остановлено развертывание NOTiFYwell.ear (имя-среды выполнения: NOTiFYwell.ear) через 25 мс
Ошибка:
Поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден
Относится к классу 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
Есть идеи, почему это не загружается? ТИА
2 ответа
Я думаю, что я выясняю проблему, вам нужно использовать это:
<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 или в файле MANIFEST.MF. Просто убедитесь, что вы используете только один или другой.
ОБНОВЛЕНИЕ: произошла ошибка в разделе часто задаваемых вопросов по веб-сайту Hibernate, я обновил его. Спасибо за ответ.
Наконец получил EAR развернут.
Развертывание EAR происходит только в том случае, если я включаю MANIFEST.MF в META-INF EAR:
Manifest-Version: 1.0
Dependencies: org.hibernate.ogm:5.3 services, org.hibernate.ogm.mongodb:5.3 services
и удалите "jboss-deploy-structure.xml".
Если я попытаюсь использовать "jboss-deploy-structure.xml" (пустой MANIFEST):
<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] (Пул потоков ServerService - 30) MSC000001: Не удалось запустить службу jboss.persistenceunit. "NOTiFYwell.ear / NOTiFYwellJAR.jar # NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: org.jboss.msc.service.StartException в службе jboss.persistenceunit. "NOTiFYwell.ear / NOTiFYwellJAR.jar # NOTiFYwellMongoDBPersistenceUnit".FIRST_PHASE: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден в org.jboss.as.jpa.service.PhaseOneSer 0 jboss.as.jpa.service.PhaseOnePersistenceUnitServiceImpl$1.run(PhaseOnePersistenceUnitServiceImpl.java:137) в java.util.concurrent.ThreadPoolExecutor.runWorker(поток.java:617) в java.lang.Thread.run(Thread.java:745) в org.jboss.threads.JBossThread.run(JBossThread.java:320). Причина: java.util.ServiceConfigurationError: org.hibernate. integrator.spi.Integrator: поставщик org.hibernate.ogm.service.impl.OgmIn Тегератор не найден в java.util.ServiceLoader.fail(ServiceLoader.java:239) в java.util.ServiceLoader.access$300(ServiceLoader.java:185) в java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.j:) в java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) в java.util.ServiceLoader$1.next(ServiceLoader.java:480) в org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImp (ClassLoaderServiceImpl.java:459) по адресу org.hibernate.integrator.internal.IntegratorServiceImpl.(IntegratorServiceImpl.java:40) по адресу org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(Bootstragjg2).boot.internal.EntityManagerFactoryBuilderImpl.buildBootstrapServiceRegistry(EntityManagerFactoryBuilderImpl.java:406) при org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:196) при org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) в org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:32) в org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerjgattb0).jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.(TwoPhaseBootstrapImpl.java:39) в org.jboss.as.jpa.hibernate5.HibernatePersistenceProviderAdaptor.getBootstrap(HibernatePersistenceProvider.Hap 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) at 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")]) - описание ошибки: {"WFLYCTL0080: сбойные службы "=> {" jboss.persistenceunit. \ "NOTiFYwell.ear / NOTiFYwellJAR.jar # NOTiFYwellMongoDBPersistenceUnit \".FIRST_PHASE"=>" java.ufr org.hibernate.integrator.spi.Integrator: поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден Причина: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: поставщик org.hibernate.og. service.impl.OgmIntegrator не найден "}} 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: поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден Причина: java.util.ServiceConfigurationError: org.hibernate.integratorspi Поставщик org.hibernate.ogm.service.impl.OgmIntegrator не найден "}}
Сопоставил объект с моей таблицей MongoDB и смог вернуть "Список" объектов.
Нужно было убедиться, что тип идентификатора Коллекции был отображен как:
@Id @Type (type = "objectid") private String id;