Файл metro-по умолчанию.xml не найден на Weblogic 12.1.3
в настоящее время мы работаем на WebLogic 12.1.2. И в этой среде наше приложение работает нормально.
теперь мы хотим омологировать наши приложения в среде WebLogic 12.1.3. Но мы сталкиваемся с проблемой веб-сервисов, которые мы используем. В новой версии сервер выдает исключение, говорящее, что " файл конфигурации по умолчанию [ metro-default.xml ] не найден".
Я пытаюсь найти что-то в этом файле, но ничего нет.
PS: мы не используем Metro, мы используем стек WebLogic по умолчанию JAX-WS. И приложение развертывается как файл WAR.
вот стек исключения
java.lang.IllegalStateException: MASM0001: Default configuration file [ metro-default.xml ] was not found
at com.sun.xml.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:142)
at com.sun.xml.ws.assembler.MetroConfigLoader.<init>(MetroConfigLoader.java:119)
at com.sun.xml.ws.assembler.TubelineAssemblyController.getTubeCreators(TubelineAssemblyController.java:122)
at com.sun.xml.ws.assembler.MetroTubelineAssembler.createServer(MetroTubelineAssembler.java:173)
at com.sun.xml.ws.server.WSEndpointImpl.<init>(WSEndpointImpl.java:193)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:337)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:332)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:164)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:577)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:560)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:303)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:179)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152)
at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:678)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.java:243)
at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:200)
at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:185)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1838)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:823)
at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:216)
at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:211)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24)
4 ответов
Я решил это так, что я добавил jaxws-rt-2.2.8.jar как зависимость от моего проекта и написал следующее в weblogic-приложение.XML-код:
<wls:prefer-application-packages>
<package-name>com.sun.xml.ws.api.wsdl.parser.*</package-name>
</wls:prefer-application-packages>
<wls:prefer-application-resources>
<wls:resource-name>META-INF/services/javax.xml.ws.*</wls:resource-name>
<wls:resource-name>META-INF/services/com.sun.xml.ws.*</wls:resource-name>
<wls:resource-name>META-INF/services/com.sun.tools.ws.*</wls:resource-name>
</wls:prefer-application-resources>
все кредиты Томас Исаксен
Я разместил этот metro-default.xml в моем Maven src / main/resources/META-INF, который приводит к размещению файла WEB-INF/classes / META-INF
на по умолчанию здесь вызвано много ClassNotFoundExceptions...
(Я использую Weblogic 12.2.1.0.0)
<?xml version="1.0" encoding="UTF-8"?>
<metro xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://java.sun.com/xml/ns/metro/config'
version="1.0">
<tubelines default="#default-metro-tubeline">
<tubeline name="default-metro-tubeline">
<client-side>
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TerminalTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.HandlerTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.ValidationTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MustUnderstandTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MonitoringTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.AddressingTubeFactory" />
<tube-factory className="com.sun.xml.ws.rx.rm.runtime.RmTubeFactory" />
<tube-factory className="com.sun.xml.ws.dump.MessageDumpingTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TransportTubeFactory" />
</client-side>
<endpoint-side>
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TransportTubeFactory" />
<tube-factory className="com.sun.xml.ws.dump.MessageDumpingTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.AddressingTubeFactory" />
<tube-factory className="com.sun.xml.ws.rx.rm.runtime.RmTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MonitoringTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MustUnderstandTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.HandlerTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.ValidationTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TerminalTubeFactory" />
</endpoint-side>
</tubeline>
</tubelines>
</metro>
мы разместили metro-default.xml в WEB-INF / classes / META-INF для решения проблемы. Содержимое файла можно взять отсюда : https://metro.java.net/guide/ch02.html#dynamic_tube-based_message_logging
по мере внедрения обмена сообщениями на основе трубки jaxws-ri-2.2.8 jars необходимы для работы любых веб-служб JAX-WS.
создайте xml-файл с именем metro-default.xml и добавьте в него содержимое xml ниже, а затем поместите этот metro-default.xml-файл внутри папки WEB-INF вашего проекта затем перезапустите сервер, он будет работать.
<?xml version="1.0" encoding="UTF-8"?>
<metro xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://java.sun.com/xml/ns/metro/config'
version="1.0">
<tubelines default="#default-metro-tubeline">
<tubeline name="default-metro-tubeline">
<client-side>
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TerminalTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.HandlerTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.ValidationTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MustUnderstandTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MonitoringTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.AddressingTubeFactory" />
<tube-factory className="com.sun.xml.ws.rx.rm.runtime.RmTubeFactory" />
<tube-factory className="com.sun.xml.ws.dump.MessageDumpingTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TransportTubeFactory" />
</client-side>
<endpoint-side>
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TransportTubeFactory" />
<tube-factory className="com.sun.xml.ws.dump.MessageDumpingTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.AddressingTubeFactory" />
<tube-factory className="com.sun.xml.ws.rx.rm.runtime.RmTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MonitoringTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.MustUnderstandTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.HandlerTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.ValidationTubeFactory" />
<tube-factory className="com.sun.xml.ws.assembler.jaxws.TerminalTubeFactory" />
</endpoint-side>
</tubeline>
</tubelines>