#java #servlets #weblogic #webservice-client #jdeveloper
#java #сервлеты #weblogic #webservice-client #jdeveloper
Вопрос:
Я использую JDeveloper 12c для создания «веб-клиента и прокси» из файла WSDL. Он работал нормально и сгенерировал клиентский класс для проверки вызова службы. Этот клиент работает нормально.
Затем я сгенерировал тестовый сервлет и убедился, что он работает.
Я вставил тот же код вызова веб-службы в сервлет, и во время развертывания я получаю это исключение:
Caused By: java.lang.NoClassDefFoundError: Could not initialize class weblogic.wsee.jaxws.spi.WLSProvider
at weblogic.wsee.jaxws.ServiceRefProcessorImpl.parseAnnotations(ServiceRefProcessorImpl.java:199)
at weblogic.wsee.jaxws.ServiceRefProcessorImpl.parseAnnotations(ServiceRefProcessorImpl.java:150)
at weblogic.wsee.jaxws.ServiceRefProcessorImpl.createTargetRef(ServiceRefProcessorImpl.java:106)
at weblogic.wsee.jaxws.ServiceRefProcessorImpl.bindServiceRef(ServiceRefProcessorImpl.java:385)
at weblogic.application.naming.EnvironmentBuilder.bindServiceRef(EnvironmentBuilder.java:1109)
at weblogic.application.naming.EnvironmentBuilder.bindServiceReferences(EnvironmentBuilder.java:1073)
at weblogic.application.naming.EnvironmentBuilder.bindServiceReferences(EnvironmentBuilder.java:1418)
at weblogic.application.naming.EnvironmentBuilder.bindEnvEntriesFromDDs(EnvironmentBuilder.java:1986)
at weblogic.servlet.internal.CompEnv.activate(CompEnv.java:198)
at weblogic.servlet.internal.WebAppServletContext.activate(WebAppServletContext.java:2797)
at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1648)
at weblogic.servlet.internal.WebAppModule.activate(WebAppModule.java:804)
at weblogic.application.internal.ExtensibleModuleWrapper$ActivateStateChange.next(ExtensibleModuleWrapper.java:317)
at weblogic.application.internal.ExtensibleModuleWrapper$ActivateStateChange.next(ExtensibleModuleWrapper.java:313)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
at weblogic.application.internal.ExtensibleModuleWrapper.activate(ExtensibleModuleWrapper.java:121)
at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:114)
at weblogic.application.internal.flow.ModuleStateDriver$2.next(ModuleStateDriver.java:192)
at weblogic.application.internal.flow.ModuleStateDriver$2.next(ModuleStateDriver.java:187)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
at weblogic.application.internal.flow.ModuleStateDriver.activate(ModuleStateDriver.java:58)
at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:145)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:729)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258)
at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:586)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:148)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:114)
at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:339)
at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:846)
at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1275)
at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:442)
at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:176)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:550)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
Я не получаю много полезных результатов в Google. Не могли бы вы помочь? Спасибо!
Комментарии:
1. Это почти всегда происходит из-за проблемы с загрузкой класса. Вероятно, у вас есть более одного файла jar с одним и тем же классом, который приводит
WLSProvider
к сбою. Проверьте наличие ear / war для jars, уже находящихся в пути к классу weblogic2. Вы на 100% правы. Я удалил папку библиотеки моего проекта и обнаружил, что виновниками были jaxb-api и jaxb-impl. Я удалил их, и это работает. Спасибо.
3. То же исключение здесь и устраняется путем удаления зависимости jaxb-impl (путем установки для области зависимостей maven значения «предоставлено»)
Ответ №1:
Размещение metro-default.xml в WEB-INF/classes/META-INF проблема решена. Поскольку вводится обмен сообщениями на основе Tube, для работы веб-служб требуются jar-файлы jaxws-ri-2.2.8.