Improve HTTP Performance by Increasing HTTP Chunk Size

Increasing HTTP chunk size with -Dweblogic.Chunksize=65500


Some clients, surprisingly, have a performance issue parsing chunked responses. In one of the recent cases, a client code took almost 500ms to parse chunks in a 1Mb JSON response.

OSB (Weblogic, in fact) can decide to send a larger payload in chunks, despite there is usually no benefit in it for internal networks. We cannot disable it as it’s a required option for HTTP 1.1.

What we can do is to increase the size of the chunk from the default 4K, reducing the overhead a client has.

Read more ›

Client Certificates at Biz: Step-by-Step Guide

How to configure 2-Way SSL (aka Client Certificate) at Biz in OSB

Cherenkov radiation

This post describes how to configure two-way SSL for outbound connections in Oracle OSB.

In other words, we’re going to make OSB calling a backend service that requires a client certificate to authenticate the connection.

If you’re looking for information on how to make OSB accepting client certificates, it is a wrong post then. That would be the inbound two-way SSL connections.

Read more ›

Primer: Calling Multiple REST Services


This is the shortest guide for making an OSB parallel call to REST services with GenericParallel.

I assume the GenericParallel service is already deployed on your domain. (If not, here’s the deployment guide.)

Suppose we need to call a RESTful service named RegisterResourceId. We’ll need to register a number of ids at once, hence the parallel call.

Read more ›

GenericParallel 1.5 is now with REST Support!

GenericParallel 1.5.0 now allows to use non-XML content, as well as HTTP POST, PUT, GET, DELETE and relative URIs. Download GenericParallel 1.5.


OSB’s split-join is WSDL-only facility. Your message must be a SOAP one to be routed anywhere from split-join.

This is quite a limitation. With the rise of REST services we do need to call multiple REST services in parallel.

GenericParallel, too, was only accepting SOAP and XML messages.

But not anymore!

Read more ›

Using JSONPath to Query JSON in OSB

Extracting values from JSON is much easier with JSONPath. Download the full example.


Recently we have used Javascript to query and update JSON payloads.

There is a way to extract necessary values from JSON in a much simpler way.

Meet JSONPath.

Read more ›

Free Script to Read OSB 11g Statistics

This is how to collect all stats from an OSB 11g domain into a CSV file:
java -jar readosbstats.jar -c -u monitor -p password1


You can export OSB stats via JMX. This is not hard, and there are code samples all over the net.

Unfortunately, JMX requires an administrator account. What people who only have a monitor account (developers, architects, BAs) supposed to do?

Here’s an answer: ReadOsbStats is a small free utility that doesn’t require admin credentials but collects the stats nontheless.
Read more ›

Graceful Degradation for OSB

Suppress non-essential services under overload to preserve the must-have functionality.


You should realize that not all services are equally useful.

Some, like submitting orders, are directly generating revenue to your company.

Some others, like getting orders history, while important, can be sacrificed to let orders get submitted.

When the system is under a higher then usual load, how can we dynamically shutdown non-essential services to release more resources to the essential ones?

Read more ›

Using Javascript to Inspect & Modify JSON Payload

How to read and update JSON in OSB with JRE’s Javascript Engine. Download the full example.

Hokkaido (Japan)

In the previous article we updated a JSON payload by converting it to XML (and back).

However, the code that does the transformation is not very readable.

Can we, inside of OSB, use a scripting language which is more native to JSON?

Say, … Javascript?

Read more ›

Dehydration for OSB: How to Run Long Transactions and Not Run Out-of-Memory

Offload the currently unused in-memory XMLs to a persistent storage, like BPEL does. Download examples.

Waiting can kill you...

Slow backends can kill the JVM if they are used in a composite service.

The data are accumulated in the service while the backend service is taking its time to respond.

Make the service slow enough and the data big enough, and the heap will be all consumed up.

Can we do something about it?

Read more ›

How to Create a Diagram of an OSB Domain

A 10000-ft view of an OSB domain, in 5 minutes, with TransitMap.


Is it possible to understand the inter-connectivity of a complex OSB domain?

Is walking through the code step by step and making notes, both on paper and mentally, the only way?

Can we generate a diagram of the domain?

Read more ›