July 29 2015

A new feature in SOA Suite 12c is composite lazy loading.  This feature allows the components, WSDLs, and XSDs for a composite to be loaded as needed instead of at startup.  This can help reduce start up time of the SOA servers from possibly as high as 30 minutes for domains with a large number of composites deployed, down to just a few minutes.  We have worked with several customers who run SOA Suite 11g with hundreds of deployed composites. Many of the composites may be retired or previous versions simply for maintaining compatibility.  Once utilizing SOA 12c, those customers will no longer have slow server start up times and can accomplish restarts much more quickly with less downtime for each node.

Enabling and Disabling Lazy Loading at the SOA-INFRA Level

Composite lazy loading and lazy deployment are both enabled at the soa-infra level by default in 12c.

You can find these settings by opening EM and right clicking on your domain and selecting System MBean Browser

Then, navigate to oracle.as.soainfra.config -> Server: soa_server1 -> SoaInfraConfig -> soa-infra

You will see two MBean attributes listed that control the lazy loading of composites:

  • CompositeLazyDeployment - This is disabled by default and controls whether composites are lazy loaded when they are deployed
  • CompositeLazyLoading - This is enabled by default and controls where composites are lazy loaded on server startup

You can enable or disable either of these options from this screen and click Apply when complete.

Overriding at the Composite Level

You also have the ability to override the soa-infra lazy loading settings at the composite level as well.

If you open your composite.xml, you can add an attribute called lazyLoading and set it to either true or false as shown below.

Lazy Loading in Action

If you are using the default settings, which enables composite lazy loading, you can see the components loading when you make your first request to the composite.

In the logs below you can see in the final log message that the composite was lazily loaded by the execute thread handling the incoming request.

In the lines before that you can see the individual BPMN components being loaded into the engine as well.

During this first execution you can see below that the request for a very simple composite took 3573ms

A 2nd request to the same service though only took 129ms after the composite had been fully loaded

By setting the lazyLoading attribute in our composite to false, we can now see that on server startup the composite and all of its components are loaded at once.

Now, our first request to the composite only took 911ms.  This is still slightly higher than the 129ms we saw in the 2nd request above, but still much faster than the first request when using lazy loading.

By using lazy loading by default in SOA 12c you should see much quicker server start up times, especially if you have a large number of composites deployed, but there may still be cases where you would rather load specific composites at start up.  In cases where a consistent, low latency response is more important that startup time you can still disable lazy loading at the composite level or for your entire domain.

About the Author

Adam Desjardin

Adam DesJardin is the Chief Technology Officer for AVIO Consulting.  Adam focuses on technical strategy, standards and delivery both within AVIO and for our customers.  Prior to joining AVIO in 2007, Adam held various consulting and architecture positions at Fuego and BEA Systems where he developed and delivered process and service driven solutions.

Join the Conversation

July 29, 2015

Hi,

Is this feature work for only newly deployed composites?

If we did an inplace upgrade from 11g to 12c, what would be the setting of lazyLoading?

How could we change if we needed?

July 29, 2015

I have not tested this in an upgrade scenario, but since your composites won't have any flags in them to override the soa-infra level setting I would check the system mbean shown in the post.  It most likely will default to the standard 12c setting which enables lazy loading.

Enter your first name. It will only be used to display with your comment.
Enter your email. This will be used to validate you as a real user but will NOT be displayed with the comment.
By submitting this form, you accept the Mollom privacy policy.