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