If you (already) created your first Oracle Service Bus 12c application/project with SOAP webservices and tried to deploy it to your IntegratedWeblogic server you might be familiar with this error: OSB-398016 Error Loading the WSDL from the repository:
Lucky for us Oracle quickly released a solution on their support website and also various blogs picked it up and posted a solution. The earliest reference I found was posted by Link. The solution to your problem was either:
- Add felix.service.urlhandlers=false to the Init properties of OSGi frameworks bac-svnserver-osgi-framework factory implementation class
- Remove the default server as a target for the framework
This worked like a charm and I was able to play around with my 12c Service Bus. However since it was stated that the solution could result into problems with BPM on your domain I reminded myself that I wanted to dive deeper into this when I had the time.
Google helped me out, and I discovered this information on the Apache Felix framework website.
Felix installs the URL Handlers service by default. If you do not want this service you can disable it, by setting the felix.service.urlhandlers property to false in the config.properties file. It is not recommended to disable this, but the main reason for doing so it because the URL Handlers implementation invokes methods to set the singleton factories for URL stream and content handler factories. Assuming that you want to use URL Handlers service, you must configure it if you aren’t running on the standard Sun JRE.
The URL Handlers service extends the standard Java URL stream and content handler mechanism to work in an OSGi environment. The way that built-in URL protocol and content handlers are discovered is by probing packages for the appropriate classes to handle the protocol/content. ……….. The value of these properties is a list of “|” delimited package names to be searched for protocol and content handlers, respectively. See the Java documentation for stream and content handlers for more information.
So disabling the URL handler service is not recommended and you should be able to extend the list of package names used for handling content and protocols. So after poking around the world wide web I finally discovered that Oracle already released a document on this with Doc ID 1903573.1
When attempting to run both OSB and BPM in the same domain in 12.1.3 the following error occurs during creation of a WSDL file:
The WSDL is not semantically valid: Failed to read wsdl file from url due to java.net.MalformedURLException: Unknown protocol: servicebus.
Apply Patch 18640346 and recreate the domain
add com.bea.wli.sb.resources.url protocol to -Djava.protocol.handler.pkgs in setStartupEnv.sh
So either download the patch or to fix this on your local integrated domain by editing the setStartupEnv.sh or setStartupEnv.cmd file.
I made the choice to edit the startup files and you just find & replace the multiple entries like stated below:
Windows OLD value setStartupEnv.cmd:
set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.protocol.handler.pkgs="oracle.mds.net.protocol|oracle.fabric.common.classloaderurl.handler|oracle.fabric.common.uddiurl.handler|oracle.bpm.io.fs.protocol"
Windows NEW value setStartupEnv.cmd:
set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.protocol.handler.pkgs="oracle.mds.net.protocol|oracle.fabric.common.classloaderurl.handler|oracle.fabric.common.uddiurl.handler|oracle.bpm.io.fs.protocol|com.bea.wli.sb.resources.url"
Linux OLD value setStartupEnv.sh:
Linux NEW value setStartupEnv.sh