Pages

Monday, June 15, 2009

OSB & ESB Performance comparison

With the release of OSB 1.3.1 with JCA adapter support I can finally compare the OSB with the ESB. I will run this performance test on my Dell laptop ( Core2Duo T9400 2.53 GHz with 3,5 Gb memory ) and try to use the same components in the OSB and the ESB. For example I will use a memory JMS Queue in the Oracle Application server as starting point for the ESB and a file based JMS Queue in WLS as starting point for the OSB process. Both OSB and ESB processes has to fill the same four tables in the Oracle 11G database and they will use the same Toplink database mappings.
For the test I will disable the JMS adapter in the ESB console or stop the queue consumption in the WLS console. Then fill the Queues and start the Service Bus processes . Before the test I will do some test runs so I know everything is alright and the Service Bus is warmed up.
Here is a picture of the ESB process. This process reads the Queue and pass it asynchronous to the next Router. This message with a XML anytype element is transformed with XSLT to a specific message schema and the last Router transforms it to the database adapter XSD.

The OSB process works almost the same as the ESB process but in the OSB I will use XQuery instead of XLST and use Proxy Services as Routers and a Business service as Database Adapter.
Here you see a process schema of Messaging proxy service. It start with a PipelinePair to do some XSD validation on the incoming message. Then the Proxy Service determines the message type in in the RouteNode, do the first XQuery transformation to make the specific message XML and start the next specific Message Proxy Service.

The specific message Proxy Service validates the XML and in the RouteNode ( Mapped to the JCA database adapter Business Service ) the next XQuery takes place, so the Business Service get the right XML for the Toplink database mapping.

Here are my test results
OSB 10.3.1 with JRocket JVM











































Total MessagesSize Message in KBTime in Seconds
With validation
Time in Seconds
1011009
5
20110019
18
10200012
10
20200035
28
1027001512
1000419

ESB 10.1.3.4 MLR7











































Total MessagesSize Message in KBTime in Seconds
With validation
Time in Seconds
1011001514
2011003328
1020002318
2020004844
1027003528
1000422

Conclusion

The OSB is the overall winner with 15% a 90% better performance than the ESB. Off course this is not the best testcase and there are other areas of the Service Bus where you can do tests for, but with this case the OSB is much faster especially with big messages ( even with JRockit ) . This OSB process does even more then the ESB process, the OSB process returns a message with the result of the database adapter and put this message in a WLS Queue.
Don't know why OSB has a better performance, maybe Weblogic is faster or the ESB instance logging is the problem. In the next Soa Suite patchset 10.1.3.5, I can test the ESB processes on WebLogic server and compare this with these results.

Thursday, June 11, 2009

Using AQ in an OSB 10.3.1 Proxy Service

In my previous blogpost I already showed you how to use a JCA Database adapter in a Business Service. In this blog I will use the AQ resource adapter in a OSB 10.3.1 Proxy Service. To make this work I use the Oracle Workshop for the OSB configuration and JDeveloper 10.1.3.4 for AQ adapter configuration. I heard from Oracle that in one of the next 11g releases you can do this all in JDeveloper.
We start in the WLS console of the OSB Server. Go to the deployments and find the AqAdapter resource adapter.
Open the AqAdapter and select the configuration Tab where we will create a new outbound connection pool.
Provide the JNDI name, I'll use the JDeveloper name convention. eis/AQ/xxxx , xxxx is the database connection name in JDeveloper.

Give the resource adapter plan a unique name and save this AQ plan.

Select the just created JDNI configuration.

We have provide the xADatasourceName. This is a datasource of WLS which connects to a Oracle schema user which has access to the AQ queues. Or you can provide the jdbc url , username and password.

We are finished with the Weblogic configuration and we can switch to JDeveloper 10.1.3.4 where we will make the AQ configuration files which we have to import in our OSB project.
Make a new ESB project where we will add the AQ adapter to the ESB configuration. The JNDI name in the AQ adapter wizard must match with the JNDI eis name of the AQ resource adapter in the WLS console.

This OSB proxy service read from the queue so we need to dequeue.

Browse or provide the schema /queue name

And select a XSD which matches with the AQ messages.

Delete the router service we don't need this.

The last part is to use this AQ queue in a OSB proxy service, Start the Oracle workshop and import AQ wsdl's and schema's into your OSB project.

Create a new Proxy service and use the AQ WSDL. OSB will detect the JCA adapter configuration.


Now we only have to provide the JNDI name in my case eis/AQ/xxxxx
That's all for the AQ configuration.

Tuesday, June 9, 2009

OSB 10.3.1 with Database adapter

With the OSB 10.3.1 release we can use the JCA Database adapter in our processes. In this blog I will show you, what steps are needed to make this work.
First we need to create a XA thin JDBC datasource in the WLS console of the OSB Server.
Next step is to configure the DB resource adapter. Go to deployments in the WLS Console of the OSB Server, where we select the DbAdapter deployment.

Go to Outbound Connection Pools Tab under Configuration and select the already created connectionfactory and press New.
Select the ConnectionFactory
The JNDI Name is the same as the EIS name which you need to provide in the DB adapter service. ( We will do this in JDeveloper 10.1.3.4 ) . In my case eis/DB/xxxxx

Now we only have to provide the XAdatasource with as value the just created datasource
Restart the OSB server.

Switch to JDeveloper 10.1.3.4 where we will create a new ESB project. ( I will create a new ESB Project for every DB adapter, This will make deployment a little bit easier). Add a new DB adapter in the ESB overview.

Now we have to provide the EIS jndi name, this must match with the JNDI EIS name in the DB resource adapter configuration ( which we created in the WLS console on the OSB server)



Complete the DB adapter configuration




We need this WSDL in the OSB, This WSDL contains the EIS JNDI name and the wanted operation.

We need the toplink classes in the OSB server so we need to make a jar deployment profile.


Start the Oracle Workshop where we make a new folder (with the name of the DB adapter service) in your project. Import the jar and the WSDL's / XSD of the JDeveloper ESB project.
Create a new Business Service and use the WSDL of your DB adapter service.


Provide the JCA name, in my case jca://eis/DB/xxxxx

In the JCS Transport Configuration Tab we only need to add the toplink_mapping.xml ( Do this add the toplink xml section)
Deploy the project to the OSB Server.
Last step is to test the Business Service with a valid xml.

check for errors in the WLS Console output window.