Featured Posts


java.lang.NoClassDefFoundError: oracle/tip/adapter/db/DBConnectionManager

During activation of one of our osb project we get the next stacktrace

java.lang.NoClassDefFoundError: oracle/tip/adapter/db/DBConnectionManager
            at oracle.tip.adapter.db.DBConnectionFactory.<init>(DBConnectionFactory.java:71)
            at oracle.tip.adapter.db.DBManagedConnectionFactory.createConnectionFactory(DBManagedConnectionFactory.java:274)
            at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFPort_JCA.getResourceAdapterMetaData(WSIFPort_JCA.java:729)
            at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFPort_JCA.parseDeploymentDescriptorProps(WSIFPort_JCA.java:210)
            at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeOperation(WSIFOperation_JCA.java:331)
            at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:316)
            at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.invokeWsifProvider(JCABindingReferenceImpl.java:359)
            at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.request(JCABindingReferenceImpl.java:257)
            at com.bea.wli.sb.transports.jca.binding.JCATransportOutboundOperationBindingServiceImpl.invoke(JCATransportOutboundOperationBindingServiceImpl.java:150)
            at com.bea.wli.sb.transports.jca.JCATransportEndpoint.sendRequestResponse(JCATransportEndpoint.java:209)
            at com.bea.wli.sb.transports.jca.JCATransportEndpoint.send(JCATransportEndpoint.java:170)
            at com.bea.wli.sb.transports.jca.JCATransportProvider.sendMessageAsync(JCATransportProvider.java:571)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.bea.wli.sb.transports.Util$1.invoke(Util.java:83)
            at $Proxy125.sendMessageAsync(Unknown Source)

Solution (for us)

Make sure the adapter itself in deployments is targeted to both the admin server and managed servers

Thanks to Marc for the genius solution 😉

fusion11g, oracle

SOA & E2.0 Partner Community Forum XIII coming up!

The registration for the upcoming SOA & E2.0 Partner Community Forum event is open!

Please register here.

The Oracle SOA and E2.0 Partner Community Forum is a wonderful opportunity to:
– learn how to sell the value of Fusion Middleware bij combining SOA and E2.0 solutions
– meet with Oracle SOA and E2.0 Product management
– exchange knowledge
– learn from successful SOA, BPM, WebCenter and UCM implementations
– understand Oracle’s Fusion Applications Strategy
– network within the Oracle SOA Partner Community and the Oracle E2.0 Partner Community

An excellent event to meet each other again!

The agenda

Agenda outline March 15th 11:30 – 18.00

11.00 – 11.30 hrs Registration
11.30 – 12.15 hrs Lobby Lunch
12.15 – 12.30 hrs Welcome & Introduction
12.30 – 13.15 hrs Keynote
Oracle Middleware Strategy and information on Application Grid and Exalogic
Andrew Sutherland, SVP Middleware Sales EMEA, Oracle
13.15 – 14.00 hrs Keynote
Managing Online Customer, Partner and Employee Engagement with Oracle E2.0 Solutions
Andrew Gilboy, VP E2.0 Sales EMEA, Oracle
14.00 – 14.30 hrs Coffee Break
14.30 – 15.15 hrs Partner SOA/BPM Reference Case
15.15 – 16.00 hrs Partner WebCenter/UCM Reference Case
16.00 – 16.30 hrs Break
16.30 – 17.00 hrs SOA Suite PS3
David Shaffer, VP Product Management, Oracle
17.00 – 17.45 hrs Why Specialization is important for Partners
Nick Kritikos, Hans Blaas & Juergen Kress, Alliances & Channels, Oracle
17.45 – 22.45 hrs Social event
Tour and tasting in beerbrewery and museum, dinner at Restaurant De Beleving, after dinner boat tour through the canals in Utrecht

Agenda outline March 16th 09.00 – 18.00

09.00 – 09.15 hrs Welcome & Introduction Day II
09.15 – 10.30 hrs Breakout round 1
  Breakout 1: SOA Suite 11g PS3 & OSB
  Breakout 2: Importance of ADF & JDeveloper
  Breakout 3: SOA Security IDM
  Breakout 4: WebCenter PS3, Whats New
  Breakout 5: E2.0 Sales Plays
10.30 – 10.45 hrs Break
10.45 – 12.00 hrs Breakout round 2
  Breakout 1: WebCenter PS3, Whats New
  Breakout 2: Applications Management Enterprise Manager and Amberpoint
  Breakout 3: ADF/WebCenter 11g integration with BPM Suite 11g
  Breakout 4: Importance of ADF & Jdeveloper Frank Nymphius
  Breakout 5: JCAPS & OC4J migration opportunities for service business
12.00 – 13.00 hrs Lunch
13.00 – 14.30 hrs Breakout round 3
  Breakout 1: BPM 11g, Whats New
  Breakout 2: Universal Content Management! 11g
  Breakout 3: SOA Security IDM
  Breakout 4: E2.0 Surrounding Products: ATG, Documaker, Primavera
  Breakout 5: Middleware Industry Value Propositions & Sales Plays
14.30 – 14.45 hrs Break
14.45 – 15.30 hrs Fusion Applications
Rajan Krishnan, Vice President, Applications Development & Product Management, Oracle
15.30 – 15.45 hrs SOA & E2.0 Summary & Closing
Hans Blaas & Jürgen Kress
15.45 – 16.00 hrs Finish & Departure

The Partner event will be located at Capgemini, Utrecht and the technical hands on and workshops will be at Hotel Vianen, Utrecht.

Also read “SOA & E2.0 Partner Community Forum XIII registration is open“.

See you there!


Book review : Oracle SOA Suite 11g R1 Developer’s Guide


The book is written by Antony Reynolds and Matt Wright. Both known from their own blogs.


The last week of 2010 i finally had some spare time to finish my read of this great book.
After reading the other 11g book, Getting Started with Oracle SOA Suite 11g R1, i was hoping to find some extra information in this one (and i did).

The guides of the SOA Suite 11g which get supplied by Oracle itself reflects this great book, a lot of information, and more important, a lot of detailed information.
Ready to use examples which are an ideal way for all to get familiar with the SOA Suite components. Since the SOA Suite is becoming a huge product it took some paperwork to describe everything on highlevel functionality.

The authors made a good combination of describing the concepts of a Service Oriented Architecture. How to implement these concepts and their relation to the whole process of defining and creating your own service by use of every component in the Oracle SOA Suite.

What i really liked in this book and missed a bit in the other one (maybe it was still too early for it), was the compare/description of the Oracle Service Bus. The authors did a great job on describing functionality of components existing in the SOA Suite and how to model them in your own processes. After that for certain parts of the suite they stepped over to the Oracle Service Bus and described very well how and what components to use in here. Readers will have a clear view what will be possible in both products and how to model process in both of them. Since the book is mainly about the SOA Suite don’t expect the find all details about the Oracle Service Bus, but they did a good job on focussing on both products.

Chapters 1 till 10 (Part1 : Getting Started) will give you overview information about the aspects of SOA and the components which are available in the SOA Suite.
Chapters 10 till 19 (Part2 : Putting it All Together) will start with an introduction to the oBay case. After that some nice (advanced) topics like SDO, error handling, validation, etc
Chapters 19 till 21 (Part3 : Other Considerations) will give as some information about the packaging and deployment of the artifacts. How to test created services and how to define security and management policies)


Table of Contents

  • Preface
  • Chapter 1: Introduction to Oracle SOA Suite
  • Chapter 2: Writing your First Composite
  • Chapter 3: Service-enabling Existing Systems
  • Chapter 4: Loosely-coupling Services
  • Chapter 5: Using BPEL to Build Composite Services and Business Processes
  • Chapter 6: Adding in Human Workflow
  • Chapter 7: Using Business Rules to Define Decision Points
  • Chapter 8: Using Business Events
  • Chapter 9: Building Real-time Dashboards
  • Chapter 10: oBay Introduction
  • Chapter 11: Designing the Service Contract
  • Chapter 12: Building Entity Services Using Service Data Objects (SDOs)
  • Chapter 13: Building Validation into Services
  • Chapter 14: Error Handling
  • Chapter 15: Advanced SOA Suite Architecture
  • Chapter 16: Message Interaction Patterns
  • Chapter 17: Workflow Patterns
  • Chapter 18: Using Business Rules to Implement Services
  • Chapter 19: Packaging and Deployment
  • Chapter 20: Testing Composite Applications
  • Chapter 21: Defining Security and Management Policies

Product Details

  • Paperback: 720 pages
  • Publisher: Packt Publishing (July 2010)
  • Language: English
  • ISBN-10: 1849680183
  • ISBN-13: 978-1849680189
  • Order at Packt


Oracle Service Bus using external Domain Value Mappings (DVM)

Guido Schmutz and Chris Tomkins already made great blogs which show us how to use Domain Value Maps in the Oracle Service Bus.

In my case i wanted to store my domain value maps on a central location (http) and not within my OSB Project itself.
My backend-system creates a new employee and returns with a resultcode. Based on the operation i used on the backendsystem and the resultcode i want to retrieve a ‘resourcebundle-code’ (frontend applications will retrieve messages based on this string) and some free-format message (just used to inform the client).


I used the next dvm (created in JDeveloper)

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Generated by Oracle DVM Editor version 1.0 at [12/23/10 11:15 AM]. -->
<dvm name="return_code_dvm" xmlns="http://xmlns.oracle.com/dvm">
    <column name="Operation"/>
    <column name="ReturnCode"/>
    <column name="MeldingCode"/>
    <column name="MeldingTekst"/>
      <cell>Employee created</cell>
      <cell>Employee removed</cell>

Put the dvm on a location on the webserver so we can retrieve it by use of the http protocol.


In Eclipse with the OSB plugin create a new OSB Project.

Create a new xquery

xquery version "1.0";
declare namespace xf = "http://tempuri.org/employee/transformations/2/";
(: declare variable $myOperation as xs:string :="newEmployee"; :)
(: declare variable $myReturnCode as xs:string :="1"; :)

declare function xf:dvmLookup($myOperation as xs:string, $myReturnCode as xs:string)
    as xs:string {
    	let $mydata := doc("http://localhost/return_code.dvm")
    	let $myCode := $mydata/*:dvm/*:rows/*:row[*:cell[1]=$myOperation and *:cell[2]=$myReturnCode]/*:cell[3]
    	let $myText := $mydata/*:dvm/*:rows/*:row[*:cell[1]=$myOperation and *:cell[2]=$myReturnCode]/*:cell[4]
    	return concat($myCode, ' xxx ',$myText)

declare variable $myOperation as xs:string external;
declare variable $myReturnCode as xs:string external;


The Xquery will have two input parameters on which i will do my selection on the dvm table.
The content of the dvm table itself i retrieve from my shared http location.

I didn’t make the selection very dynamic, for this have a look at the other articles.

Create a new Proxy Service and add an assign to call the xquery.

Select the xquery in the assign

Assign the result to a temp variable

Result of the lookup of the resultcode of the New employee operation

Result of the lookup of the resultcode of the Remove employee operation

The flow should look a bit like this. I used a simple proxy service with anyxml interface (with no routing) just for testing


With the doc() function we’re able to import the domain value map into our xqueries so we can execute the xpath selections on it.
I also tried to include the dvm in the osb project itself and then use the doc-function like “doc(return_code.dvm)”. This will result in a file not found error (haven’t really digged into this, to see what the correct location should be). When we use the function like doc(‘d:/workspace/myosbproject/dmv/return_code.dvm’) it will work.

fusion11g, osb

Extend Pre-built Virtual Machine for SOA Suite with Oracle Service Bus

PeterPaul already showed us in his blog how to install a new wls server in the image and install the Oracle Service Bus in the new server.
In my blog i will use the wls of the SOA Suite and extend the domain with the Oracle Service Bus application.

Install OEPE

In the WebLogic home of the SOA Suite there isn’t an OEPE installed.
This will be needed for the OSB installation.

Download oepe-galileo-all-in-one-

Connect to the vm box as ‘oracle’ user and create a dir in the fusion middlware home

  cd /oracle/fmwhome
  mkdir oepe-galileo-all-in-one-

Unzip the oepe zip in this directory

  cd oepe-galileo-all-in-one-
  unzip /oracle/tmp/oepe-galileo-all-in-one-

Installation of the oepe in the weblogic home is done.

Oracle Service Bus

Download ofm_osb_generic_11.

Unzip the file and run the installer.
By default the middleware home which is selected at step1 is : /home/oracle/bea_default

Change this location to


Now the installer will also see the correct location of the OEPE home.

Next, next and we’re done.

Extend Domain

Start the configuration wizard

  /oracle/fmwhome/oracle_common/common/bin and start config.sh

Choose to extend and existing Weblogic domain

Browse to the domain1 directory

Select the OSB components to include in the domain

When testing the db connection for the OSB JMS Reporting Provider use the xe connectstring.
Default password for all db schemas (soa_infra etc) is : welcome1

Start the server again by use of the ´Start/Stop WebLogic Server´ icon on the desktop.
Check the console urls to see if everything is still working

  • http://localhost:7001/em
  • http://localhost:7001/console
  • http://localhost:7001/sbconsole


When you try to start Eclipse from the virtual box itself without parameters it will give some warning like

GC Warning: Repeated allocation of very large block (appr. size 638976):
        May lead to memory leak and poor performance.

Use : ./eclipse -vm /oracle/fmwhome/jdk160_18/bin/java


The first version of the blog showed steps on how to extend the domain so the osb server would run in his own managed server (All Domain topolgies)
On deployment of a composite it would fail with the next error

  Caused By: oracle.fabric.common.FabricDeploymentException: Unable to register service. {rootCauses=[]}

Lateron i will try to investigate this error. For now i updated the blog to make use of the ‘Single Server Domain Topology’, and now deployment of the composite still works and i can add resources in the OSB Console.

edn, fusion11g

Oracle Event Delivery Network, subscription of a Database Agent

In the Oracle SOA Suite we can create events by use of the Event Driven Network (EDN).
See my one of my last articles on how to produce such an event from with plsql or how to produce it from bpel.
The next step in the process is to consume these events and execute business logica based on them.

In the SCA composite applications we can use the Mediator to subscribe to the defined events and route them further on to other components in the process (for example bpel).
In the Enterprise Manager we can also subscribe a ‘Database Agent’ to our events.
Go to the soa-infra app > Business Events

Select the event and click the Subscribe button

In the ‘Create Database Subscription’ popup window click the search glass

In the ‘Select: Database Agent’ popup window we will see an overview of the registered database agents.
Click the ‘Create agent’ button.

In the ‘Create Database Agent’ popup windows we can create our agent and point it to our database procedure.

We will create the procedure itself later on.

Creation of the database agent is done.

Go to the ‘Subscriptions’ tab. We will see an overview of all the subscriptions on our events.

At this moment we have 2 subscriptions. One for our database agent and one for the mediator component which we created in the other article.

After these steps the documentation is really lacking of good info. I couldn’t find any details on what the stored procedure interface should be to be able to connect it to the database agent.
First step i did to be able to debug some messages is to put on the edn logging in the database

		ENABLED := 1;

Now we can query to table ‘EDN_LOG_MESSAGES’ to see the output of the edn process.
In my case i was seeing messages like :

488	108	"Error in event subscriber: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'MY_LOG_TABLE_PROCEDURE'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored"

After searching in all the sql object creation files i could track the error message down to the procedure ‘edn_filter_and_deliver_event’.
In here the next part will be executed :

    execute immediate 'begin ' || subscriber_callback || '(:1, :2, :3); end;' 
      using event.namespace, event.local_name, event;

And the objecttype used for event :

create or replace type edn_business_event as object (
    namespace varchar2(256), 
    local_name varchar2(80), 
    payload sys.xmltype,
    compressed_event decimal(10),
    decomp_method varchar2(64));

Now we can finally construct the interface of our procedure (MY_LOG_TABLE_PROCEDURE).
It needs 3 parameters : event_namespace (of type varchar2(256), event_local_name (oftype varchar2(80) and event (of type edn_business_event).

Create the stored procedure with the mentioned interface

create or replace
	PROCEDURE MY_LOG_TABLE_PROCEDURE (namespace in varchar2,local_name in varchar2, my_event in edn_business_event) AS 
		INSERT INTO MY_LOG_TABLE (log_message) VALUES (my_event.payload.getClobVal());

For testing purpose i will only log the event object.
Time to test the database agent.

Trigger an event from the console and check filesystem to see if the process completed.
Now go to the database table and query the ‘MY_LOG_TABLE’ table.

The subscription of the database agent works.
Now we have the opportunity to let components from both the database and middleware subscribe to events.

edn, fusion11g

Oracle Event Delivery Network, produce events from within plsql

With the release of the soa suite 11g Oracle supplies us the EDN component, Event Delivery Network.
Basically it supplies us a publish/subscribe model to trigger and subscribe on defined business events.

For this little demo a created the next event definition

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions xmlns="http://schemas.oracle.com/events/edl" targetNamespace="http://schemas.oracle.com/events/edl/TestEvent">
    <schema-import namespace="http://nl.xenta/events" location="xsd/TestEvent.xsd"/>
    <event-definition name="EventElement">
        <content xmlns:ns0="http://nl.xenta/events" element="ns0:TestEvent"/>

To ‘throw’ the events we can make use of both the java and plsql apis.
For this demo i will shorty show how to trigger them from bpel/the console and a plsql call.

The composite i created

The bpel interface will be used just for triggered the event.

In the bpel itself we will use the invoke activity to not invoke a partnerlink but to invoke/trigger the event.

The Mediator component will subscribe to the event and will just write it back to filesystem.

Or we can just use the Enterprise Manager console to trigger the events.
In the console go to the soa-infra application, rightmouseclick and go to ‘Business Events’.

Select the ‘Test Event’, click ‘Test’ and use for example the next payload

	<TestEvent xmlns="http://nl.xenta/events"> 
	   <action>action from console</action> 
	   <description>description from console</description> 

Trigger from plsql

To be able to trigger the events from within plsql we just have to call a ready to use procedure from the soa_infra schema (DEV_SOAINFRA in my case).
Procedure to be called :

procedure edn_publish_event (
  namespace  in varchar2, 
  local_name in varchar2, 
  payload    in clob, 
  priority   in binary_integer default 5)

The procedure is a wrapper for the next call

  edn_internal_publish_event (namespace, local_name, payloadCopy, 'S', NULL, subject_info, priority); 

Which eventually will call

edn_enqueue_business_event (edn_business_event(namespace, local_name, 
      sys.xmltype.createXML(payload), NULL, NULL), source, subject_info, target, priority);

Create a stored procedure :

create or replace
procedure call_edn_test
'<business-event xmlns:ns1="http://schemas.oracle.com/events/edl/TestEvent" xmlns="http://oracle.com/fabric/businessEvent">
	<TestEvent xmlns="http://nl.xenta/events">
	   <action>action from plsql</action>
	   <description>description from plsql</description>
</business-event>', '1');

After triggering the event from the console, bpel and plsql we will have 3 files in the output directory

<?xml version="1.0" encoding="UTF-8" ?><ns0:TestEvent xmlns:ns0="http://nl.xenta/events" xmlns="http://nl.xenta/events">
   <ns0:action>action from plsql</ns0:action>
   <ns0:description>description from plsql</ns0:description>

<?xml version="1.0" encoding="UTF-8" ?><ns0:TestEvent xmlns:ns0="http://nl.xenta/events" xmlns="http://nl.xenta/events">
   <ns0:action>action from console</ns0:action>
   <ns0:description>description from console</ns0:description>

<?xml version="1.0" encoding="UTF-8" ?><ns0:TestEvent xmlns:ns0="http://nl.xenta/events" xmlns="http://nl.xenta/events">
   <ns0:action>action from bpel</ns0:action>
   <ns0:description>description from bpel</ns0:description>


To implement decoupling in the middleware, events are an important concept to be use. Event Driven Architectures are based on them and in the Oracle SOA Suite Oracles supplies us the EDN (Event Driven Network) to help us implement such an architecture. To eventually be able to produce events from within the database and consume the events from the Middleware we could have used Oracle AQ and one of the JCA Adapters Oracle supplies us. To process events from the database and consume those in the Middleware by use of the EDN functionality we can now just make use of a simple database procedure call. The EDN will just process the event like every other event produced in the Middleware.

Download : EventToFile.zip (Jdeveloper project)


This project is not associated with an Oracle Service Bus Configuration

Google will give enough hits on the topic, too bad not one which fixed my issue.
Normally you would create an OSB project, create an OSB Configuration project, drag the OSB project on the Configuration project and your done.

In my case it would give the error “Path for project must have only one segment.”

Go to the file

<osb workspace directory>\OSB Configuration\.settings\com.bea.alsb.core.prefs and edit the row 'container.referenced.projects'.

At the end add the name of the project you’re try to link to your Configuration project.
Restart Eclipse and clean (Project > Clean) both the Configuration project and the OSB project.


Oracle Service Bus, set filename for business service

And ex-colleague asked me to give a little help on setting the filename which was getting created by his Oracle Service Bus flow.

Create a new business service with file transport and set the correct location of the file with his prefixes.
In this wizard we can only set the prefixes and the location of the file, so no option to set the filename by use of some expression.

For the interface of the proxy service i used the almighty helloworld wsdl, and the content of this request we will put in the file.
The name of the file will have the value of the first argument (‘arg0’) on the ‘hello’ operation (in this case ‘John’ with the prefixes).

<hel:hello xmlns:hel="http://hello.service.xenta.nl/">

In the flow route to the business service (or use the option in the ide to create a proxy service from a business service).

Open the route and the only thing we need in here is the activity ‘Set Transport Headers’.

Since we’re routing to a business service which makes use of the file transport we can make use of the ‘fileName’ property of the ‘file’ part.
If we would have create a business service for some other transport we could also make use of all the other properties to override values in the routing.
Just browse the list, a lot of usefull properties to use.

We select the ‘fileName’ of the ‘file’ part, and at the right we will now be able to use an expression to override the default generated filename by the Oracle Service Bus.
In our case we will select ‘Set Header to’ and use the expression ‘$body/hel:hello/arg0/text()’.

Save the flow and run the proxy service. Using the payload from above the next file will be created ‘c:\test\mytestfileJohn’. Prefix + ‘John’ from the payload.


SOA-BPM Enterprise Methodology Group

A new methodology group, SOA-BPM Enterprise Methodology Group, has been started by Lonneke Dikmans.

“This group is a place to discuss best practices and methodologies for SOA and BPM Enterprise (Oracle) development, including effort by “experts” in SOA (that’s anyone that knows what SOA stands for 😉 to discuss high level issues than those discussed on the OTN SOA Forums. This effort is an overall part of getting SOA and BPM experts, advocates and programmers to start collaborating at user group events and OOW to get “SOA and BPM out there”.”

The site.
To join the group, please fill in the survey.

Page 4 of 11« First...23456...10...Last »