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
To 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).
A production environment can be upgraded if it runs 126.96.36.199 (PS5) or 188.8.131.52 (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.
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.
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.
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 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.
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.
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.
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.
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.
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).
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.
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.
For 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.
– 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.
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.
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.
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
- Creation on in-memory java models
- Creating Mbeans
- Loading the various components in the composite
- 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.
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.
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.