2014-09-23 13 views
9

Aktualnie używamy wersji WebLogic 12.1.2. I w tym środowisku nasza aplikacja działa dobrze.Plik metro-default.xml nie został znaleziony na Weblogic 12.1.3

Chcemy teraz homologować nasze aplikacje ze środowiskami WebLogic 12.1.3. Ale mamy problem z usługami sieciowymi, z których korzystamy. W nowej wersji serwer zgłasza wyjątek mówiąc, że "Domyślny plik konfiguracyjny [metro-default.xml] nie został znaleziony".

Próbuję znaleźć coś na tym pliku, ale nie ma nic.

PS: Nie używamy Metro, używamy domyślnego stosu JAX-WS WebLogic. Aplikacja jest wdrażana jako plik WAR.

Oto stos wyjątkiem

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$3.next(ModuleStateDriver.java:216) 
    at weblogic.application.internal.flow.ModuleStateDriver$3.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) 

Odpowiedz

6

Rozwiązałem go tak, że dodałem JAXWS-RT-2.2.8.jar jako zależnością do mojego projektu i napisał do następujących WebLogic-application.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> 
+1

To też zadziała. Ale ponieważ nie zależało mi na używaniu JAX-WS RT w tej aplikacji, zdecydowałem się użyć stosu WebLogic. W tym celu usunąłem plik sun-jaxws.xml z WEB-INF i detektora WSServletContextListener z pliku web.xml. – vkrausser

1

Umieściliśmy Metro-default.xml w WEB-INF/classes/META-INF, aby rozwiązać ten problem. Zawartość pliku można pobrać z tutaj: https://metro.java.net/guide/ch02.html#dynamic_tube-based_message_logging

Jak wprowadziła komunikator oparty Tube, JAXWS-ri-2.2.8 słoiki są zobowiązani do dokonywania JAX-WS webserwisach pracy.

+0

Witam! To działa, aby rozwiązać brakujący plik metro-default.xml, ale wiemy, że nie wymaga to fabryk rur. Zobaczę, czy mogę to naprawić bez wprowadzania nowych zależności w aplikacji. Jakieś wskazówki? – vkrausser

+0

adres URL zerwanego http://grepcode.com/file/repo1.maven.org/maven2/org.glassfish.metro/metro-config-impl/2.1/META-INF/metro-default.xml –

4

Wszystko kredytowej Thomas Isaksen

umieściłem tę metro-default.xml maven w moim src/main/resources/META-INF co skutkuje umieszczeniem pliku WEB-INF/classes/META-INF

default tutaj spowodowały wiele C lassNotFoundExceptions ...

(używam 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>