Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Weblogic 12.1.3上找不到文件metro-default.xml_Java_Web Services_Weblogic_Jax Ws - Fatal编程技术网

Java 在Weblogic 12.1.3上找不到文件metro-default.xml

Java 在Weblogic 12.1.3上找不到文件metro-default.xml,java,web-services,weblogic,jax-ws,Java,Web Services,Weblogic,Jax Ws,我们目前正在运行WebLogic 12.1.2。在这种环境中,我们的应用程序运行良好 我们现在想要的是使我们的应用程序与WebLogic 12.1.3环境保持一致。但是我们使用的Web服务面临一个问题。在新版本中,服务器抛出异常,表示“未找到默认配置文件[metro-Default.xml]” 我正试图在这个文件上找到一些东西,但什么都没有 PS:我们不使用Metro,我们使用WebLogic默认的JAX-WS堆栈。应用程序被部署为WAR文件 下面是异常的堆栈 java.lang.Illegal

我们目前正在运行WebLogic 12.1.2。在这种环境中,我们的应用程序运行良好

我们现在想要的是使我们的应用程序与WebLogic 12.1.3环境保持一致。但是我们使用的Web服务面临一个问题。在新版本中,服务器抛出异常,表示“未找到默认配置文件[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$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)
java.lang.IllegalStateException:MASM0001:未找到默认配置文件[metro-Default.xml]
位于com.sun.xml.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:142)
位于com.sun.xml.ws.assembler.MetroConfigLoader(MetroConfigLoader.java:119)
位于com.sun.xml.ws.assembler.TubelineAssemblyController.getTubeCreators(TubelineAssemblyController.java:122)
位于com.sun.xml.ws.assembler.metrotubelineasembler.createServer(metrotubelineasembler.java:173)
位于com.sun.xml.ws.server.WSEndpointImpl。(WSEndpointImpl.java:193)
位于com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:337)
位于com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:332)
位于com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:164)
位于com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:577)
位于com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:560)
位于com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:303)
位于com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:179)
在com.sun.xml.ws.transport.http.servlet.WSServletContextListener.ParseAdapters和CreateDelegate(WSServletContextListener.java:131)上
位于com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152)
位于weblogic.servlet.internal.EventsManager$FireContextListeneration.run(EventsManager.java:678)
位于weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
位于weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
在weblogic.servlet.provider.wlssobjecthandle.run(wlssobjecthandle.java:57)上
位于weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.java:243)
位于weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:200)
位于weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:185)
位于weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1838)
位于weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876)
位于weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661)
位于weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:823)
位于weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
位于weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
位于weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
位于weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
在weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
位于weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216)
位于weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211)
位于weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
位于weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73)
在weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24)中

我们将metro-default.xml放在WEB-INF/classes/META-INF中以解决此问题。文件内容可从以下位置获取:


随着基于Tube的消息传递的引入,任何JAX-WS web服务都需要jaxws-ri-2.2.8 jar来工作。

我解决了这个问题,因此我将jaxws-rt-2.2.8.jar作为项目的依赖项添加到了我的项目中,并在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>

com.sun.xml.ws.api.wsdl.parser.*
META-INF/services/javax.xml.ws.*
META-INF/services/com.sun.xml.ws.*
META-INF/services/com.sun.tools.ws.*
所有的信用卡

我将metro-default.xml放在我的maven src/main/resources/META-INF中,结果文件被放在WEB-INF/classes/META-INF中

此处导致了许多ClassNotFoundException

(我正在使用Weblogic 12.2.1.0.0)


创建一个名为metro-default.xml的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>


你好!好的,这可以解决丢失的metro-default.xml文件,但要知道它找不到所需的管道工厂。我看看能不能修好它
<?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>