SOA Suite 12c: All about Developer Productivity and Performance SOASuite12c developer blog

SOA Suite 12c: All about Developer Productivity and Performance

Oracle released SOA Suite 12c (12.1.3) bringing a further integration between components and a bunch of new features. This blog is one in a series of new features summaries about SOA Suite 12c to view them all check this blog.

This blog will summaries the features specific to the Developer Productivity and Integration in JDeveloper and in the Enterprise Manager. The features are summarised, but most will get an own blog that tells about the full details.

Disclamer: Screenshots are made in Beta version of SOA Suite 12c, so may differ in final version!

Developer installer with integrated server

SOA Suite 12c: All about Developer Productivity and Performance JDeveloper installTo kick-start developing with 12c, ’30 minutes to Hello World’, Oracle created a single download for JDeveloper and Database, Weblogic and  SOA Suite. It’s one single package which include JDeveloper, a integrated Weblogic service with SOA Suite (including Service Bus), JavaDB (for it’s Database) and the Enterprise Manager.

All software is installed into a single middleware home directory as specified at install time. In JDeveloper, the WebLogic Integrated Server is pre-configured with above SOA Suite components runtime and JavaDB. JavaDB is a development database that allows one to start development with SOA Suite without the need to run RCU.

30 minutes to Hello World
This release advertises that the install, configuration, and startup time for the integrated server such a development environment takes less than 30 minutes. I can say that it took me less time on my laptop (Quadcore, 16GB).

Upgrading Production
A production environment can be upgraded if it runs 11.1.1.6 (PS5) or 11.1.1.7 (PS6). The end result is a full 12c installation, but there is no rollback scenario, so backup database and Weblogic domain first before upgrading.

Integration of SOA and SB development

In 11g the development environment of the SB is in OEPE (Eclipse), while the SCA Composite development environment is done in JDeveloper. In 12c both SB and SCA development is done in JDeveloper. For SB the analogy of the SCA environment has been used by renaming a ‘Proxy’ to ‘Proxy Services’ (‘Exposed Services’ in an SCA composite) and a ‘Business Service’ to ‘External References’ (same as in a SCA composite) and visually show them as swim lanes, see figure ‘SB development in JDeveloper’ below.

SB development in JDeveloper

SB development in JDeveloper

When developing a pipeline, nothing has actually changed. It is the same interface you are used to when developing OSB 11g in OEPE (Eclipse), including the green circles that appear indicating you can drop a component there, see picture ‘SB Pipeline development in JDeveloper’ below.

12c Servicebus Pipeline Design

Pipeline editor similar to Eclipse IDE (11g)

To see all Service Bus features check this dedicated blog.

Runtime SOA environment integrated in JDeveloper with debug functionality

SOA development in JDeveloper 12c can be more productive, because an integrated SOA Suite runtime environment will be available on the integrated WebLogic server within JDeveloper. Like mentioned at beginning of this blog the installation will be ‘out of the box’, with the simple installer. This means that you can locally develop and run your SCA composites and Service Bus services!

And even better, you can run it in debug mode. You can now set breakpoints in Composite editor, BPEL processes and Service Bus Pipelines, which gives you the ability to stop at a breakpoint, look at the data and step in, step out, etc, just as any ‘normal’ programming language in an IDE. In a BPEL process, you’re also able to change the value of a variable while debugging.

JDeveloper 12c:  Integrated SOA/OSB debugger

JDeveloper 12c: Integrated SOA/OSB debugger

To see all SCA Composite features check this dedicated blog.

New technology adapters

In this release of SOA Suite a lot of new adapters are added. For Mobile Enablement support is added for REST/JSON. To add data into or to retrieve data from Coherence integrated Cache a Coherence Adapter is added and for Cloud Integration like Salesforce.com there is a separate cloud adapter available. There is also an adapter to connect to a LDAP service (put, get, list..) and an updated UMS adapter.

Mobile Enablement

Mobile enablement is one of the topics that many Oracle products address in 12c. SOA Suite 12c is one of those products. SOA Suite 12c introduces a REST Adapter to give mobile applications access to backend services. This adapter introduces REST & JSON for mobile development.

This adapter can easily expose any service or reference as REST. One of the main features are automated conversion from XML to JSON, the possibility to map operations to existing services & bindings and has built-in coherence caching for result optimization. With the wizards in JDeveloper it is possible to generate XML & JSON sample payloads.

New Technology Adapter: REST

New Technology Adapter: REST

Looking at the REST adapter more closely it supports multiple resource paths, including dynamic path variables to define the subject/primary key. It is possible to map multiple operation to the same resource path if it uses a different HTTP method/verb.

These operation can be manually added or existing operation from other components can be added / imported. For every operation the adapter supports both XML and JSON payloads; the developer can select which type (JSON, XML, URL-encoded) of payload is supported. If the request message has URI parameters then a default value can be set for these parameters that will be used if the parameter is not given in request payload.

REST Adapter wizard

REST Adapter wizard

For every operation the response message and optionally a payload can be set. The difference with the response is that the input payload is based on a XSD element and the output to the client can be XML, JSON or no payload. The adapter also support Fault bindings when something goes wrong. More on this adapter later in a series of blogs by Maarten Smeets.

New Technology Adapter: Coherence

Integrated Caching

JDeveloper revealed another new adapter in this release. The Coherence adapter integrates the Coherence Cache with SCA Composites. This adapter can be used to reduce latency on for high-traffic operation. With the adapter the process logic can put, get, remove and query data into/from the Coherence cache.

It has support for XML and POJO (custom Java class) as data structure. Some interesting features are auto-generation of a unique key when putting data into Coherence, setting a time-to-live for your data in the cache and returning only the keys when querying data.

The main business value of this adapter is that the cache can be queried before invoking a service to get the same result. The us of Coherence is be part of the SOA Suite license, so every project can use this adapter by default as part of the enterprise architecture.

Cloud Connectivity

Besides Mobile enablement one of the hot topics is the cloud. SOA Suite 12c offers configuration-driven Cloud Adapter for reduced complexity of integration with key SaaS and PaaS platforms.

The cloud adapters have support for inbound and outbound integration, secure connection and session management. It has a graphical API discovery, uses declarative modeling through Wizards and supports optimization of API requests (for example: it can combine operations into a single request to the cloud service).

The Salesforce.com adapter has the same global features as described above, but also has support for standard and custom Salesforce objects, SOAP API using Partner WSDL & Enterprise WSDL and Salesforce’s own Query Language (SOQL) & Search Language (SOSL). The adapter uses the Oracle Credential Store Framework to store user credential and supports the adapter diagnostic framework for reporting and alerting.

New Cloud Adapters: Salesforce.com

New Cloud Adapter: Salesforce.com

Adapter SDK
There is also a SDK available which allows developers to build adapters that facilitate integration between SOA components and SAAS applications. The framework is split up in three parts.

A Core Design Time Framework which allows adapters to model SAAS application metadata and security properties for presentation in JDeveloper. A Cloud Adapter Wizard Framework which allows adapters to customize a JDeveloper wizard for browsing/selecting SAAS application metadata/security properties. And a Core Runtime Framework which allows adapters to perform transformations on request/response messages and integrate with OWSM (optional).

LDAP Adapter

Also a newcomer is the LDAP adapter. The LDAP adapters has support for inbound and outbound integration. With this adapter you can access you LDAP directory i.g. check if a certain user has the required privileges to execute the called operation.

On the inbound side it can listen to Entry change notifications (ECN) and Change log notifications (if LDAP server support this, i.g. OpenLDAP doesn’t). When listening to a ECN you can select which Search Base you want to use, an optional Search Filter and on what Event (source & type) you want to be triggered on. You can also configure which information (object class+attributes) you want to collect/process and what the Polling interval, Size limit and Attribute delimiter should be.

On the outbound side you have seven operations; Add, Delete, Modify, Modify DN, Compare, Search and an option to execute a custom DSML request. The first four operation (Add, Delete…) are one-way calls and the last three (Compare…) are synchronize calls. The DSML request option uses the standardized DSMLv2 schema definition.

When you want to add or modify a object class you can select which object classes+attibutes should be included. When deleting or modifying a DN then you’re given a single DN element.  When searching for object you can specify the Search Base, Scope and if you want to search referrals and aliases. When comparing you compare two DN’s with each other.

SOA Suite 12c: All about Developer Productivity and Performance Adapter LDAP wizard1

New Technology Adapter: LDAP

UMS Adapter

The UMS adapter already exists in 11g, but in the 12c release of SOA Suite this adapter has gotten a major update. In 11g the UMS adapter only supports Email, but in 12c it also support SMS and IM for inbound and outbound integration. Besides that the adapter now has a new outbound operation type to get the status of a send message.

For SMS (SMPP) and IM (XMPP) the configuration is done through the driver configuration pages in the EM. There you specify the gateways that are used when sending/receiving messages.  The UMS adapter in JDeveloper has two new notification types to support the new drivers; SMS and IM. When choosing SMS instead of composing an email you enter the from and to telephone# and when choosing IM you enter the jammer account to send the message to.

Updated Technology Adapter: UMS

Updated Technology Adapter: UMS

MFT Adapter

New Technology Adapter: MFTFor integrating Managed File Transfer (MFT) with SOA Suite there is a MFT adapter available and can be used for inbound and outbound transactions. With the inbound operation a SCA Composite can receive files or file references from MFT. The MFT adapter uses an own WSDL that can also be used for other technologies i.g. Java. With the outbound operation you can send files to a MFT server (Web service endpoint of a MFT source) to be processed further.

Other Adapters

– MQ Adapter to integrate with IBM WebSphere MQ
– MSMQ Adapter to integrate with Microsoft Message Queuing
– The Web Service Adapter is renamed to SOAP Adapter

New Database Connection Types

SOA Suite 12c adds two new Database connection types when creating Database connections; JavaDB and JDE World. JavaDB (Derby) is used to run SOA Suite repository on that is used for the integrated server. With the JDE World connection you have easy access to the data in the JD Edwards database.

New Database Connections Types

New Database Connections Types

Performance & Optimization

SOA Suite 12c is not only have visible changes there is a lot happened under the hood. First of all 12c is much lighter and faster then 11g. In 11g the installation and start up times were high and it has a high memory foorprint. SOA Suite 12c changes the game with faster start up times and optimized memory usage. The main reason for this is that 12c is build in a modular way and it uses lazy loading of components.

Also in 11g it requires advanced user knowledge to do performance tuning and the on-going growth of the database slowed data retrieval. I can name a few companies I worked at that had purging issues. In 12c Weblogic has a self tuning threading model and the schemas are re-designed for data storage. It even comes with out-of-the-box configurations to manage the growth of the database.

Modularity

Not all SOA components may be used/needed by a customer with this in mind 12c is build in a modular way. First of all 12c has improved start up times and memory footprint with modularity profiles enabling only required components. By default the SOA_FOUNDATION profile is configured after new installation. This can then be altered in EM. If you upgrade from SOA Suite 11g it will get the SOA_CLASSIC as the default profile. The SOA_CLASSIC profile has the largest footprint and the BPEL_ONLY profile has the least footprint, showing a 30% difference between them. The 30% difference is across all profiles, as some heavier profiles have the same footprint.

The profiles listed below are arranged in decreasing order of (memory) footprint
SOA CLASSIC ~ SOA Foundation with B2B + BPM Modules
SOA FOUNDATION WITH HEALTHCARE ~ SOA Foundation with B2B + Healthcare UI
SOA FOUNDATION WITH B2B ~ SOA Foundation Enterprise + B2B
SOA FOUNDATION ENTERPRISE ~ SOA Foundation + Full Adapter Set
SOA FOUNDATION ~ Orchestration + Mediator + Rules + Partial Adapter set
ORCHESTRATION ~ BPEL-Only + HWF + Partial Adapter set
BPEL-ONLY ~ BPEL Components + SOA Common Infrastructure + Partial Adapter set

The partial Adapter set consist of the FileAdapter, FTPAdapter, DBAdapter, JMSAdapter, AqAdapter, MQSeriesAdapter, OracleAppsAdapter and the UMSAdapter. The full adapter sets add the rest, SocketAdapter, LdapAdapter, CoherenceAdapter, MSMQAdapter, JDEWorldAdapter and the SAP Adapter.

12c Performance: Modularity Profiles

12c Performance: Modularity Profiles

Composite Lazy Loading

12c introduces a different approach to loading Composites. Lazy loading is a staggered loading of composite artifacts which spreads out bootstrap cost. The composite loading time is itself a fixed number, but this approach delays the loading of some resources (Schemas, WSDL, XSLTs, etc) till it receives its first time request. With this the initial time for server startup is improved and the cost across for individual composites is spread out based on their demand. It reduces overhead from composites which are rarely used and retired composites.

Composite loading has the following stages

  1. Creation on in-memory java models
  2. Creating Mbeans
  3. Loading the various components in the composite
  4. Loading the resources used by the composites such as schemas & WSDLs

The first two stages are performed at server start up, which is more of loading the metadata that would be needed. When a particular composite receives a request, then it performs the next two stages, that is composite starts initializing and loading its resources and initiates and doing the same for dependent composites.

12c Performance: Lazy Loading

12c Performance: Lazy Loading

Work Managers

The self tuning threading model is implemented using Work Managers. WLS leverages work managers across SOA Suite, eliminating the need to perform manual configurations to tune for performance. The required resource management and scheduling is delegated to WLS. The Event Delivery Network (EDN) and adapters do not use work managers for all their processing, but have a separate resource model.

Work managers are self tuning. This avoids any inconsistencies that occur with processing transactions from manual setting. And allows WLS to self tune based on types of processes. For example, in previous versions manually configuring the number or volume of threads for incoming requests would hold up those resources even if the requests are not flowing in and there by preventing those resources being available for high volume transactions at a given point in time.

DB Tuning out-of-the-box

When running RCU to create the initial DB schemas you can choose between several DB profiles; small, medium and large. When selecting a profile in RCU it enables the appropriate OOTB performance features. The medium/large profiles automatically configure DB partitioning and Global hash indexes. The latter helps with faster querying and helps with EM responsiveness and instance tracking performance. The global hash indexes also avoids full table scans and coupled with auto purge feature which keeps the overheads low and recreating of indexes periodically helps with performance.

Purge/Partitioning Improvements

Purging of instance data is an important part of SOA Suite maintenance. In 12c Auto purge of SOA DB is enabled by default for new installations. Purging of the SOA DB can  now be scheduled through the enterprise manager, which uses Oracle DB schedular. There is improved performance due to the new DB schemas which consolidate Audit and Flow instance data and eliminates orphaned instances. 12c supports Interval Partitioning which accelerates purging by targeting tables/instances within a time range.

12c Performance: Auto Purging

12c Performance: Auto Purging

This blog may be updated if other cool features are discovered.
For full coverage check the other first look blogs.

One Response

  1. hm July 30, 2014