File metro-default.xml not found on Weblogic 12.1.3

June 15, 2015

Reading time ~1 minute

After upgrading from WebLogic 12.1.2 to 12.1.3 several of our JAX-WS enabled apps broke with the following message:

“Default configuration file [ metro-default.xml ] was not found”.

Alrighty then, so off to support.oracle.com we go. Registered a SR to which I got a reply in an instant:

This is very likely Bug 18416897 : MASM0001: DEFAULT CONFIGURATION FILE [ METRO-DEFAULT.XML ] WAS NOT FOUND

Fixed in version 12.1.4, unfortunately there is no other solution for 12.1.3 </i>

To keep the story short I used trial and error and a littel bit of help from god and ended up with the following file which will solve the problem in a

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>
</metro>

I know there are some other workarounds out there but then you’ll have to configure classloader filtering and other painful stuff.

Thomas is part of the middleware team at Sysco and has been a developer since 1995 working with HTML,Javascript and Java ++ since the day they were born. He's been working with Oracle middleware and database products since 2006.


Get “non XML” file on request based on a file name and send it via HTTP POST with OSB 12c

Requirement is fairly simple, there is a need to transfer a “non XML” file (in this specific case .pdf document) based on the file name w...… Continue reading