Featured Posts

bpel, oracle, soasuite

Oracle Composite – leftover oramds imports

On designtime we use the oramds to develop our processflows in our bpel processes.

Basically the composite.xml part for a bpel process would look like this :

<component name="saveEmployee" version="1.0">
    <implementation.bpel src="BPEL/saveEmployee.bpel"/>
      <service name="client_ep" ui:wsdlLocation="oramds:/apps/xsd/myapp/1.0/saveEmployee.wsdl">
        <interface.wsdl interface="http://mynamespace.nl/saveEmployee#wsdl.interface(bewaarB2bEmployeeServicePort)"/>

When you open the bpel in jdeveloper, jdeveloper will automatically add the next import to your .bpel file :

  <import namespace="http://mynamespace.nl/saveEmployee"
          importType="http://schemas.xmlsoap.org/wsdl/" ui:processWSDL="true"/> 

The value from the ui:wsdlLocation-attribute is copied to the import/@location.
The ui:* attribute would suggest it’s only used for ui-related things (like the development in jdeveloper).

When we manually remove the whole import-element from the .bpel file and try a redeployment it will just deploy the composite. On runtime the service will also complete in a valid way so the import in the .bpel file is only used on designtime and not on runtime.

To have one central place for publishing artifacts and make them available for other interested parties (in our case other internal applications), we expose them by using a simple apache http server.

So in this case the uri “oramds:/apps/xsd/myapp/1.0/saveEmployee.wsdl” would also be retrievable at “htp://myapacheserver.nl/xsd/myapp/1.0/saveEmployee.wsdl”.

Since we only use the mds on designtime and use the apache location at runtime in the whole otap we need a simple cfgplan to change the locations in the artifacts.
When we generate a sample cfgplan (rightmouseclick on the composite.xml > Generate config plan), we will notice the .bpel file artifacts won’t get customized
The wsdlAndSchema section lists all the wsdls, schemas and jca files but no bpel files.

<?xml version="1.0" encoding="UTF-8"?>
<SOAConfigPlan xmlns:jca="http://platform.integration.oracle/blocks/adapter/fw/metadata" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy" xmlns:edl="http://schemas.oracle.com/events/edl" xmlns="http://schemas.oracle.com/soa/configplan">
	<composite name="*">
	<wsdlAndSchema name="*">

When we look in the logfiles we see some errors coming by.

info.log:[2016-02-25T16:58:01.928+01:00] [xxx-MS1] [WARNING] [] [oracle.fabric.common.wsdl] [tid: 127] [userId: weblogic] [ecid: 40869563-6b99-4a25-81a5-ed030a64e4df-00000001,0:2] [APP: soa-infra] Initial loading of WSDL at oramds://apps/xsd/myapp/1.0/saveEmployee.wsdl failed due to: Error in getting XML input stream: oramds:/apps/xsd/myapp/1.0/saveEmployee.wsdl: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded /apps/xsd/myapp/1.0/saveEmployee.wsdl does not exist.. Will retry the load using the metadata manager associated with the composite..

So although the bpel itself just works it does try to resolve the oramds imports in the .bpel file (since those aren’t customized and still use oramds imports instead of http imports).

To remove the import from the bpel we use the the maven-antrun-plugin and the xmltask in ant to edit the .bpel file at the prepare-package phase.

                           <echo message="Cleaning up bpel artifacts (removing wsdl imports)" />
                            <taskdef name="xmltask"
                            <xmltask todir=".">
                              <fileset dir="." includes="SOA/BPEL/*.bpel"/>
                              <remove path="//*//*[local-name()='import'][@importType='http://schemas.xmlsoap.org/wsdl/']" />

We added the plugin to a parent pom so it will be active for all composite projects.
Since we also use some embedded java in the processes the xpath match should be on “//*[local-name()=’import’][@importType=’http://schemas.xmlsoap.org/wsdl/’]”.
Imports like

<import importType="http://schemas.oracle.com/bpel/extension/java" location="java.lang.String"></import>

won’t be removed.

fusion11g, oracle, soasuite

Error deploying Oracle Composite with wrong encoding wsdl

We had some issues with deploying a composite which retrieves his wsdl for the partnerlinks from Nexus.
The supplier of the services adds the archive with the wsdl artifacts in Nexus, we download the dependency and after that we compile/validate the composite against the downloaded set of artifacts.

For one particular partnerlink the composite just wouldn’t compile.

Error message :

Validating composite "c:\Repos\composites\mydomainobject\MyService\composite.xml"
c:\Repos\composites\mydomainobject\MyService\composite.xml:21: error: Load of wsdl "oramds:/apps/xsd/nextgen/gm/services/mydomainobject/2/myservice.wsdl" failed
c:\Repos\composites\mydomainobject\MyService\composite.xml:44: error: Cannot find Port Type "{http://ibridge.nl/gm/services/mydomainboject/2}MyServicePortType" for "Service1" in WSDL Manager
c:\Repos\composites\mydomainobject\MyService\composite.xml:44: warning: Failed to Find Binding "Service1":"{http://ibridge.nl/gm/services/mydomainboject/2}MyServicePortType" in WSDL Manager
c:\Repos\composites\mydomainobject\MyService\composite.xml:44: warning: Failed to Find Binding "Service1":"{http://ibridge.nl/gm/services/mydomainboject/2}MyServicePortType" in WSDL Manager
c:\Repos\composites\mydomainobject\MyService\composite.xml:30: error: Cannot find Port Type "{http://ibridge.nl/gm/services/mydomainboject/2}MyServicePortType" for "Service1" in WSDL Manager
c:\Repos\composites\mydomainobject\MyService\composite.xml:63: error: Cannot find Port Type "{http://ibridge.nl/gm/services/mydomainboject/2}MyServicePortType" for "Mediator" in WSDL Manager
c:\Repos\composites\mydomainobject\MyService\composite.xml:63: error: Cannot find Port Type "{http://ibridge.nl/gm/services/mydomainboject/2}MyServicePortType" for "Service1" in WSDL Manager

After recreating the partnerlink over and over again we thought the wsdl for it just looked valid. After selecting the wsdl when we create the partnerlink it also parses the operations correctly, so it looks valid.
The error message is a bit misleading.

Eventually we noticed the encoding of the wsdl itself was changed from ANSI to UTF-8.

Change the encoding back to ANSI (Notepad++), refresh mds, recreate the partnerlink and compile the composite and we have one happy composite again.

soa, soasuite

Altova XMLSpy, testing custom functions in xsl transformations

In our middleware solutions (Oracle SOA Suite) we use a lot of xsl transformations.
Part of these transformations use database backend systems to do lookups for transforming internal values to external values (which can then be communicated to the customers).

In the Oracle SOA Suite you can create custom xsl function and store the jar in the domain/lib folder and then you will be able to use it in the xsl transformations.

We use Altova XMLSpy a lot for creating all these xsl transformations. To be able to test these custom functions in the xsl transformations you use the next in the xsl files to be able to execute the custom functions from within XMLSpy.

Simple example of how to call a java method to uppercase a string.

package nl.xenta.xsl;

public class Helper {
    public Helper() {
    public static String formatName(String input) {
        return input.toUpperCase();

And the xsl transformation calling the formatName method

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xenta="java:nl.xenta.xsl.Helper?path=jar:file:///c:/xsl_functions.jar!/">
	<xsl:template match="/">
				<xsl:value-of select="xenta:formatName('testing')"/>

Use “java:” to add the jar file to the xsl.

Now we can test the xsl transformation without deploying the bpel with the transformation first and test it on runtime.


Oracle BPEL, retrieving the validate activity fault message

The ‘Validate’ activity in Oracle BPEL gives us the functionality to validate variables again schema definitions.
When using it in your bpel process you will get a nice informative message in the ‘Flow trace’.


When you’re using some generic error hospital functionality you also want this message to be available in there.
First try would be, add a Scope around the activity and catch the ‘invalidVariables’ System Fault.

When using a getFaultString on the fault variable or after assigning it to your own fault variable you will see the fault stack will be empty

		<part name="summary">
			<summary xsi:type="def:string"/>
		<part name="detail">
			<detail xsi:type="def:string"/>
		<part name="code">
			<code xsi:type="def:string"/>

Because of some bug in the engine you won’t be able to get a handle to the fault message.

To be able to retrieve the fault message do the next.
Create a mediator in the composite based on a wsdl/operation which you ‘represent’ the element you’re trying to validate.

If you have a variable in your process like this :
variable name=”myEmployee” messageType=”emp:myEmployeeMessage”
variable name=”myEmployee” element=”emp:myEmployeeRef”

Then also create/use a wsdl which exposes an operation with the same messagetype/element in it.

In certain situations you will be validating an element which isn’t available directly in some operation in some wsdl (for example when you validate against an element which is only defined in a canonical xsd definition).
In that case just create a dummy wsdl/operation and use the element-definition in there, make sure you use the same namespace-structure.

Create the mediator based on this wsdl.

In the mediator enable the validateSchema option (true)

	<Mediator name="validateInput" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" wsdlTargetNamespace="http://xmlns.oracle.com/ValidateService/ValidateProject/ValidateProcess" xmlns="http://xmlns.oracle.com/sca/1.0/mediator">
	   <operation name="process" deliveryPolicy="AllOrNothing" priority="4" validateSchema="true"/>

We won’t be defining any routing rules, we just need the operation to validate the input and that’s it.
When the input isn’t validate it will trigger a remote fault which we will catch in our bpel process.

Instead of using the validate-activity, create an invoke to the mediator partnerlink.


As you can see, we now receive a fault stack back which includes our validation message.

The bpel will looking something like this :

The remote fault will be thrown by the mediator, in the second scope we now catch the remote fault instead of the invalid variables fault, and this fault variable does contain the information we need.

download : ValidateProject.zip


Oracle JCA Database adapter and performance win on big clobs

In a few of our services in bpel and osb we’re inserting a lot of data (big payload messages) into the database by use of the jca db adapter.
We noticed performance would drop hugely when the db adapter needed to insert big payloads (CLOBS) and when the stream of messages on these services would continue even more performance would dramastically go down on the system.

After disabling “wrap data types” on the datasource in Weblogic we had a pretty good performance win on processing big clob messages into the database.

To disable wrapping of data type objects do the next :

  • Login the Weblogic Console
  • Click yourdomain > Services > Data Sources > your_datasource > Connection Pool > Advanced > disable Wrap Data Types

See this (Oracle® Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server 11g Release 1 (10.3.5) > 10 Tuning Data Source Connection Pools) document for extra information of the exact benefits of enabling/disabled the option


Server subsystem failed. Reason: java.lang.NumberFormatException: null

Our admin server of the osb development environment failed to restart because of a full disk.
After cleaning up the admin server still wouldn’t start resulting in the next stack.

<Sep 28, 2012 10:18:16 AM CEST> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: java.lang.NumberFormatException: null
java.lang.NumberFormatException: null
        at java.lang.Integer.parseInt(Integer.java:454)
        at java.lang.Integer.parseInt(Integer.java:527)
        at weblogic.ldap.EmbeddedLDAP.validateVDEDirectories(EmbeddedLDAP.java:1104)
        at weblogic.ldap.EmbeddedLDAP.start(EmbeddedLDAP.java:242)
        at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
        Truncated. see log file for complete stacktrace
<Sep 28, 2012 10:18:16 AM CEST> <Error> <WebLogicServer> <BEA-000383> <A critical service failed. The server will shut itself down>

Locate the file :


.. and remove it

In our case the file got corrupted (0byte file).
Removing the file, the file will get recreated with something like the next content :

[weblogic@my_machine conf]$ cat replicas.prop
#Generated property file
#Fri Sep 28 10:27:06 CEST 2012


Oracle Service Bus 11g Development Cookbook is added to the OSB OTN Learn More page

Our book “Oracle Service Bus 11g Development Cookbook” has been added by Oracle to the “Learn More About Oracle Service Bus” section on OTN.
You can find it over here together with other usefull resources.


OTN Article : Three Recipes for Oracle Service Bus 11g got published

“Whip up a fresh batch of service- and message-oriented solutions with these recipes from the Oracle Service Bus 11g Development Cookbook”

Today two new items related to the Oracle Service Bus 11g Development Cookbook got published

OTN Article : Three Recipes for Oracle Service Bus 11g

Podcast Show Notes: Author Interview: Oracle Service Bus 11g Cookbook


Oracle Fusion Middleware Partner Community Forum Malage, the overview

On the 7th and 8th of februari i attended the Oracle Fusion Middleware Partner Community Forum in Malaga.
A 4 day during event with other Oracle colleagues from other companies and from Oracle itself.

After taking a early flight from Schiphol Amsterdam, we arrived on time in Malaga. Great weather, compared to the -12 degrees in The Netherlands.

The agenda for the 4 days
The first day started with the next list of session :

  • Keynote Oracle Middleware Sales Strategy, Opportunities and Go-to-Market
  • Keynote Oracle Fusion Middleware Strategy & Direction
  • Partner SOA & BPM & Webcenter Reference Case
  • Keynote Automatic and Dynamic Publishing using Semantics and Webcenter Content
  • WebLogic 12c & Enterprise Manager 12c & ExaLogic for Fusion Middleware
  • ADF overview and roadmap

The day ended with the so called ‘Socal Network Event’. As usual Jurgen planned a great evening again for all of us.
Starting in El Pimpi restaurant with some drinks, delicious snacks and live music!

.. and to end up in Aleas Restaurant for a great dinner. Ideal moment to find out more about the new ps5/12c features and to finally get in contact with some friends of twitter.

The second day would be the more interested day with presentation about the new upcoming releases. Ideal to get in touch with the right persons and try to find out what’s coming up for us.
The interesting ones for me :

  • WebLogic what’s new in 12c
  • SOA Suite 11g overview, latest new features and directions
  • iAs to Wls
  • WebLogic automation & first WebLogic impressions

For the overall agenda see here.

The last 2 days we could follow the next hands-on trainings :

  • ADF & WebCenter MasterClass by Red Samurai, VASS, InfoMentum and Oracle
  • WebLogic 12c: Maciej Gruszka
  • SOA: Simone Geib & James

A list of upcoming features in one of the next minor upcoming releases (no guarantees, no dates!). Besides that some notes i made myself


  • Oracle Service Bus will make use of the ECID, so we will be able to trace down to OSB in the audit trial of the instances in the EM
  • Unified exception handling framework (“Error hospital”) (search/delete/recover failed instances)
  • Alerts for stuck messages (eventually these alerts will have the same destinations like the alerts from OSB), extra search options in the EM for these type of instances (stuck messages, ECID, etc)
  • Testing individuals bpel processes from the composite. Support for assertions, fast forward for wait activities
  • New transactions properties (required/requiresNew) for sync and oneway bpel processes (initiating calls). Able to set those on creation of the process instead of in the xml after creating.
  • New delivery proprties (async.persists/async.cache/sync) for async and oneway processes. (async.persist = save message in delivery store before picked up by engine, async.cache = in memory and sync = no save al all)
  • New property inspector for composite properties, instead of xml editing
  • Support for bpel 2.0 Dynamic Partnerlinks
  • Skip Condition on activities for bpel 2.0
  • Throw faults on failed assertions
  • Set timeouts on request/reply and in-only operations
  • Copy/paste functionality, for copying parts of your process in design time
  • Reduced memory footprint (let’s hope this time it will run fine on my mega dell laptop)
  • Enhanced purging strategies (
  • Out of the box integration with WebLogic Diagnostic Framework (WLDF) and Diagnostics Framework(DFW)
  • Coherence integration with DB adapter (cache usage = read/read-write)
  • Template support for composites
  • Besides XSLT also support for XQuery (like in OSB)
  • Out of the box scheduler (ESS) for scheduling webservices, adapters, ejb, plsql, etc


  • Improved RESTful webservices
  • Assign Transport Policies via OWSM
  • Apply policy to local proxies
  • Optimization importing jars containing an big amount of artificats
  • New console with OSB Designer and OSB Dashboard
  • OSB service will get same kind of composite overview in JDeveloper (Exposed services/Components/External Services)


  • OSB, CEP, Composites, etc in 1 IDE
  • Better support for debug and tracing in JDEV
  • AIA support in OSB


  • Java EE 6 and Developer Productivity
  • Integrated Traffic Management
  • Better performance
  • Oracle Virtual Assembly Builder (OVAB) support
  • Better Maven integration
  • Latest Spring framework support
  • -Dservertype=wlx, launch instance without ejb, jms and jca containers
  • FastSwap
  • Option for storing transactions logs in de DB instead of filestore
  • Enhanced Disaster Recovery and High Availability
  • Deploy Glassfish application on Weblogic (detection of Glassfish descriptor)

Overall a great event again.
Thanks go out to Jürgen Kress and Hans Blaas for organizing it!

books, osb

Oracle Service Bus 11g Development Cookbook has been published!

Good news today from the publisher!
The book of which i’m coauthor of has been published! After months of hard work it’s finally there.

Oracle Service Bus 11g Development Cookbook : http://www.packtpub.com/oracle-service-bus-11g-development-cookbook/book

I hope you will all like it.

Thanks to the other authors (Guido, Edwin, Jan and Mischa) for all their hard work and for the great few months of working together to establish this great piece of work.
Special thanks go out to Guido for guiding the whole process of making this book. All the hours of hard work and organizing everything, i hope it was worth it!

The book

Something about the book (which i nicely copy/pasted from Guido his blog)

The book contains more than 80 practical recipes to develop service- and message-oriented solutions on the Oracle Service Bus 11g.

This cookbook is full of immediately usable recipes showing how to efficiently develop on the Oracle Service Bus. In addition to its cookbook style, which ensures the solutions are presented in a clear step-by-step manner, the explanations go into great detail, which makes it good learning material for everyone who has experience with the OSB and wants to improve. Most of the recipes are designed in such a way that each recipe is presented as a separate, standalone entity and reading of prior recipes is not required. The finished solution of each recipe is also made available electronically.

The 80+ recipes are organized into the following chapters (the digit behind the title showing the number of recipes in that chapter):

  • Creating a basic OSB service (13)
  • Working efficiently with OSB artifacts in Eclipse OEPE (7)
  • Messaging with JMS transport (9)
  • Using EJB and JEJB transport (5)
  • Using HTTP transport (5)
  • Using File and Mail transports (5)
  • Using JCA adapter to communicate to the database (6)
  • Using SOA Direct transport to communicate with SOA Suite (4)
  • Communication, Flow Control and Message Processing (10)
  • Reliable communication with OSB (5)
  • Handling Message-Level Security requirements (9)
  • Handling Transport-Level Security requirements (4)

Happy reading!


AMIS blog : Review of Oracle Service Bus 11g Development Cookbook (Packt Publishing) by Edwin Biemond, Guido Schmutz, Eric Elzinga et. al.
SOA@Oracle SCA, BPEL, BPM & Service Bus blog

Page 1 of 1012345...10...Last »