2014-09-23 11 views
9

Attualmente siamo in esecuzione su WebLogic 12.1.2. E in questo ambiente la nostra applicazione funziona bene.File metro-default.xml non trovato su Weblogic 12.1.3

Ciò che vogliamo ora è di omologare le nostre applicazioni agli ambienti WebLogic 12.1.3. Ma stiamo affrontando un problema con i servizi Web che utilizziamo. Nella nuova versione il server genera un'eccezione dicendo che "il file di configurazione predefinito [metro-default.xml] non è stato trovato".

Sto cercando di trovare qualcosa su questo file ma non c'è niente.

PS: Non utilizziamo Metro, utilizziamo lo stack JAX-WS predefinito di WebLogic. E l'applicazione è distribuita come un file WAR.

Ecco la pila di eccezione

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) 

risposta

6

ho risolto così che ho aggiunto jaxws-rt-2.2.8.jar come dipendenza al mio progetto e ho scritto in seguito alla 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

Funzionerà anche. Ma, poiché non mi interessava usare JAX-WS RT in questa applicazione, ho optato per utilizzare lo stack WebLogic. Per questo, ho rimosso il file sun-jaxws.xml da WEB-INF e il listener WSServletContextListener da web.xml. – vkrausser

1

Abbiamo messo la metro-default.xml in WEB-INF/classes/META-INF per risolvere il problema. Il contenuto del file può essere preso da qui: https://metro.java.net/guide/ch02.html#dynamic_tube-based_message_logging

Con l'introduzione della messaggistica basata su Tube, i jaxws-ri-2.2.8 sono necessari per rendere operativi tutti i servizi Web JAX-WS.

+0

Ciao! Bene, questo funziona per risolvere il file metro-default.xml mancante, ma so che non trova le fabbriche di valvole richieste. Vedrò se posso ripararlo senza introdurre nuove dipendenze dall'applicazione. Qualche consiglio? – vkrausser

+0

url non funzionante http://grepcode.com/file/repo1.maven.org/maven2/org.glassfish.metro/metro-config-impl/2.1/META-INF/metro-default.xml –

4

Tutto il merito per Thomas Isaksen

ho messo questo metro-default.xml nel mio Maven src/main/resources/META-INF che si traduce in file di essere immessi WEB-INF/classes/META-INF

il default qui ha causato molti C lassNotFoundExceptions ...

(sto usando 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>