Friday, May 13, 2011

OSB/SOA: Performance Improvement with DBAdapter and Toplink

After struggeling with performance issues on the production environment, we fixed a major performance and stability improvement on our OSB environment. This solution is also valid for the SOA Suite.

When you use the DbAdapter to query one-to-many (1:M) table sctructure, Toplink is reading the whole result structure into memory. If you have a large amount of data (milions of records) and you use this OSB Proxy Service or SOA Composite very often, a few times per second, you can expect the Java memory is aggressively used and the Weblogic server is doing a lot of garbage collection. This can even result into time-outs or even out-of-memory errors.

The fix is rather simple, but this can not be done via JDeveloper or Eclipse via the common interface. You have to edit the following file and change the default value from true to false:

<DBAdapterFunction>-or-mappings.xml: <batch-reading>false</batch-reading>

Reference: Toplink Optimaztion

Post a Comment