java.lang.Ошибка noSuchMethod: javax/постоянство/spi/PersistenceUnitInfo.getValidationMode()Ljavax/постоянство/режим проверки

#hibernate #spring #deployment #weblogic11g #nosuchmethoderror

#гибернация #весна #развертывание #weblogic11g #ошибка nosuchmethod

Вопрос:

Когда я развертываю свой файл war (он отлично работает в Tomcat) в Weblogic, я продолжаю получать ошибку.

Мои технологии
веб-сервис spring 3
для гибернации
jpa
(metro)

Моя библиотека

Моя ошибка

 #### > (BasePersistenceUnitInfoImpl.java:158)
 в weblogic.deployment.PersistenceUnitInfoImpl.(PersistenceUnitInfoImpl.java:39)
в weblogic.deployment.AbstractPersistenceUnitRegistry.storeDescriptors(AbstractPersistenceUnitRegistry.java:349)
 в weblogic.deployment.Абстрактныйpersistenceunitregistry.loadPersistenceDescriptors(абстрактныйpersistenceunitregistry.java:124)
 в weblogic.deployment.Регистрация модуля.(ModulePersistenceUnitRegistry.java:58)
в weblogic.servlet.internal.WebAppModule.setupPersistenceUnitRegistry(WebAppModule.java:1790)
 в weblogic.servlet.internal.Загрузчик WebAppServletContext.initclass(WebAppServletContext.java:3028)
 в weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:447)
в weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:493)
 в weblogic.servlet.internal.HTTPServer.loadWebApp(HTTPServer.java:418)
в weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.java:972)
 в weblogic.servlet.internal.Модуль веб-приложения.подготовить(WebAppModule.java:382)
 в weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176)
в weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
 в weblogic.application.internal.flow.DeploymentCallbackFlow$1.следующий (DeploymentCallbackFlow.java:517)
 в weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
в weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:159)
 в weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:45)
в weblogic.application.internal.BaseDeployment $ 1.далее (BaseDeployment.java:613)
 в weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
в weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:184)
 в weblogic.application.internal.SingleModuleDeployment.prepare(SingleModuleDeployment.java:43)
в weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:154)
 в weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
в weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:207)
 в weblogic.deploy.internal.targetserver.operations.Активируйте операцию.Допрепарируйте(ActivateOperation.java:98)
в weblogic.deploy.internal.targetserver.operations.Абстрактная операция.подготовить(AbstractOperation.java:217)
 в weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:747)
 в weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1216)
на weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:250)
 в weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:159)
 в weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:171)
 в weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.доступ к 000 долларов США (DeploymentReceiverCallbackDeliverer.java:13)
на weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.запустите (DeploymentReceiverCallbackDeliverer.java:46)
в weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
 в weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
 в weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
 Вызвано: java.lang.Ошибка noSuchMethod: javax/persistence/spi/PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
в org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:621)
 в org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73 )
в weblogic.deployment.BasePersistenceUnitInfoImpl.initializeEntityManagerFactory(BasePersistenceUnitInfoImpl.java:393)
 в weblogic.deployment.BasePersistenceUnitInfoImpl.initializeEntityManagerFactory(BasePersistenceUnitInfoImpl.java:386)
 в weblogic.deployment.BasePersistenceUnitInfoImpl.(BasePersistenceUnitInfoImpl.java:158)
 в weblogic.deployment.PersistenceUnitInfoImpl.(PersistenceUnitInfoImpl.java:39)
в weblogic.deployment.AbstractPersistenceUnitRegistry.storeDescriptors(AbstractPersistenceUnitRegistry.java:349)
 в weblogic.deployment.Абстрактныйpersistenceunitregistry.loadPersistenceDescriptors(абстрактныйpersistenceunitregistry.java:124)
 в weblogic.deployment.Регистрация модуля.(ModulePersistenceUnitRegistry.java:58)
в weblogic.servlet.internal.WebAppModule.setupPersistenceUnitRegistry(WebAppModule.java:1790)
 в weblogic.servlet.internal.Загрузчик WebAppServletContext.initclass(WebAppServletContext.java:3028)
 в weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:447)
в weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:493)
 в weblogic.servlet.internal.HTTPServer.loadWebApp(HTTPServer.java:418)
в weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.java:972)
 в weblogic.servlet.internal.Модуль веб-приложения.подготовить(WebAppModule.java:382)
 в weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176)
в weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
 в weblogic.application.internal.flow.DeploymentCallbackFlow$1.следующий (DeploymentCallbackFlow.java:517)
 в weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
в weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:159)
 в weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:45)
в weblogic.application.internal.BaseDeployment $ 1.далее (BaseDeployment.java:613)
 в weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
в weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:184)
 в weblogic.application.internal.SingleModuleDeployment.prepare(SingleModuleDeployment.java:43)
в weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:154)
 в weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
в weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:207)
 в weblogic.deploy.internal.targetserver.operations.Активируйте операцию.Допрепарируйте(ActivateOperation.java:98)
в weblogic.deploy.internal.targetserver.operations.Абстрактная операция.подготовить(AbstractOperation.java:217)
 в weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:747)
 в weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1216)
на weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:250)
 в weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:159)
 в weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:171)
 в weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.доступ к 000 долларов США (DeploymentReceiverCallbackDeliverer.java:13)
на weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.запустите (DeploymentReceiverCallbackDeliverer.java:46)
в weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
 в weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
 в weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

кто-нибудь знает?

(ошибка при развертывании в weblogic 11g)
1) в чем ошибка?
2) каковы причины этой ошибки?
3) в файле war требуется файл jar. не принимает ли это?
4) это какой-либо конфликт с jar?

Комментарии:

1. Я не использовал Weblogic, но поскольку это контейнер JEE, он должен иметь реализацию EJB, которая может конфликтовать с вашими классами JPA. Tomcat — это всего лишь контейнер сервлета, в котором нет jar для JPA или EJB. В наши дни IDE, такие как Netbeans, учитывают целевой сервер и генерируют различные войны, чтобы избежать этих конфликтов.

2. спасибо за повтор … итак … вы предлагаете удалить jar Rt, связанный с jap?

3. Моим лучшим вариантом было бы восстановить war с помощью инструмента (IDE), осведомленного о возможностях Weblogic. Но если это не вариант… Ну, JPA обычно подразумевает наличие как минимум двух jar-файлов, один с JPA API (обычно что-то похожее на javax-persistence) и один с реализацией (это должно быть openjpa-persistence), и я не думаю, что вам следует удалять оба. Я думаю, что если у вас нет других потенциальных клиентов, попробовать не помешает…

4. какова ваша версия веб-блога? версии до 10.3.3 не имеют готовой поддержки JPA 2.0 и предпочитают загружать собственные интерфейсы JPA, независимо от того, что вы добавляете в свой war-файл. wiki.eclipse.org/EclipseLink/Development/JPA_2.0 /…

Ответ №1:

Добавьте это в свой weblogic.xml файл:

 <?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app ...>
    ...
    <container-descriptor>
        <prefer-application-packages>
            <package-name>antlr.*</package-name>
            <package-name>org.hibernate.*</package-name>
            <package-name>javax.persistence.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>
  

Я пытался с <prefer-web-inf-classes>true</prefer-web-inf-classes> помощью, но безуспешно. Я использую Weblogic 11g (10.3.6), Hibernate 4.1.9 и Spring 3.2.1. С этим постоянство работает как шарм!

Источник здесь.

Комментарии:

1. @jelies, у меня такая же проблема. В weblogic.xml настроен так, как вы указали, но выдает ошибку: java.lang. Исключение IllegalArgumentException: интерфейс javax.persistence. EntityManagerFactory не виден из загрузчика классов в java.lang.reflect.Proxy.getProxyClass(Proxy.java:373) в java.lang.reflect.Proxy.newProxyInstance(Proxy.java:601) в weblogic.deployment. BasePersistenceUnitInfoImpl.initializeEntityManagerFactory(BasePersistenceUnitInfoImpl.java:412)

Ответ №2:

Добавьте weblogic.xml файл в web-inf и поместите в него следующее

 <?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
<container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>`
  

Ответ №3:

Это также может означать, что включаемая вами зависимость может зависеть от несовместимой зависимости с вашим проектом. например.. в maven вы можете использовать тег «исключения», чтобы не упаковывать оскорбительную зависимость в свою войну, делая что-то вроде этого:

 <dependency>
    <groupId>com.ibm.websphere</groupId>
    <artifactId>wxsutils</artifactId>
    <version>2.5.4-SNAPSHOT</version>
            <exclusions>
                  <exclusion>
                    <groupId>org.apache.geronimo.specs</groupId>
                    <artifactId>geronimo-jpa_3.0_spec</artifactId>
                 </exclusion>
            </exclusions>
</dependency>