Running Mediator instances issue

We encountered an issue with one of our clients when the SOA Purge wasn’t being very effective due to the running mediator instances even though the rest of the flow trace had completed, This wasn’t an issue for business as such however in most cases caused them to fall out of the criteria for Purge due to the state in which these mediator instances were in.
This should not cause much of a problem to clients who have are low on volumes, however for any of the larger clients where the daily volumes runs into Millions this can be a big problem.
As always the first step to solving a problem lies in the identification of the root cause so we wrote the following query to identify any running Mediator instances when the composite itself has completed.
Query to be run on the SOA Infra DB (SOA 11g).
SELECT comp.*
FROM mediator_instance mi,
composite_instance comp,
cube_instance ci
WHERE mi.composite_instance_id = comp.id
AND mi.composite_creation_date > (sysdate – 12) — select the number of days you want to run this for
AND comp.CREATED_TIME > (sysdate – 12) — select the number of days you want to run this for
AND comp.state IN (1,3,9,11,17,19,21,23,25,27,29,31)
AND mi.component_state IN (1,2,8)
AND ci.cmpst_id = comp.id
AND ci.creation_date > (sysdate – 12)
AND ci.state IN (4,5,6,7,8,9,10)
ORDER BY comp.created_time;
For a list of what these states mean and stand for refer to my earlier post http://nitinaggarwal.wordpress.com/2013/06/12/soa-11g-soa-infra-db-states-for-soa-composites-and-components/
Once you have identified the various composites you can then look the details up using the EM or writing further DB queries.
In most cases the problems lies in the way the code is written and hence needs to be fixed.
In certain scenarios we noticed that if for instance a Bpel calls a mediator (sequentially) and there is a fault in that mediator calling a reference.
Due to the fault policies the bpel would re try as configured which would then initiate another call to the mediator and might recover in this case if the root cause is resolved.
As a result of the above the composite will be marked as completed however that did not update the status of the mediator instances and left them either running or one of the other non purgeable states.
There isn’t much you can do in this scenario as with SOA 11.1.1.4 there isn’t an option to abort specific components and you can’t abort a composite which is already completed.
Having speaking to my contacts I found out that there is another similar bug in SOA 11.1.1.7 product and a fix will be made available as part of early patches to the 11.1.1.7 release.
One work around for such a scenario is to Un-deploy or Re-deploy the composite which will mark all the instances as stale and thus make them eligible for purging.
For most other cases we implemented some code changes that got rid off any such occurrences.
Also implemented a lot of performance tuning changes to the engine settings which helped us a lot, but the details for those will come in a later post.

Did you like this? Share it:
Categories: BPM, ESB, OESB, SOA, Uncategorized | Tags: , , , , | Leave a comment

Performace Tunning with OSB – RouterRuntimeCache and Proxy initialisation

As your project grows and the number of proxy services you have in the project grows significantly (>100) you might notice that the performance of the services degrades heavily.

This can be attributed to the face that the OSB is now unable to Cache all your services at runtime.

OSB caches proxy service runtime meta-data using a two-level cache with static and dynamic sections. The cache introduces a performance trade off between memory consumption and compilation cost. Note that caching proxy services may help throughput but could impact memory usage.

The static section is an upper-bound Least Recently Used (LRU) cache that is never garbage collected. When a proxy service is bumped from the static section, it is demoted to the dynamic section where the cache can be garbage collected when there is memory pressure.

Fortunately for us there is a fix for this in place already.

The number of proxy services in the static portion of the cache can be tuned by configuring the RouterRuntimeCache appropriately.

It’s done using a system property com.bea.wli.sb.pipeline.RouterRuntimeCache.size. The default value is 100. Note that this is the number of proxies and NOT dependent on the size of each or proxies so the memory it takes can depend on complexity of these proxies and any Xqueries they call.

This setting can be increased to a desired value provided there is sufficient memory for runtime data processing for large number of proxy services. Or you will have to increase the system JVM settings accordingly along with the increase.

This property value can be set in the setDomainEnv.sh file as an extra java argument as follows:

-Dcom.bea.wli.sb.pipeline.RouterRuntimeCache.size={size}

Example:

EXTRA_JAVA_PROPERTIES=”-Dcom.bea.wli.sb.pipeline.RouterRuntimeCache.size=3000 ${EXTRA_JAVA_PROPERTIES}”
Additionally, you might still notice that the first invocation is slow as we see while trying to test the services, this is due to the fact that these services are being compiled then and any future invocations will be a lot faster due to them being in the static Cache.
There is a very interesting article by Mark Smith illustrating how we can utilise this setting to improve the SLA and ensure that the first invocation does not cause you to fail on your SLA. https://blogs.oracle.com/MarkSmith/entry/osb_proxy_initialization/

Ref: http://docs.oracle.com/cd/E25054_01/core.1111/e10108/osb.htm


Did you like this? Share it:
Categories: Best Practices, ESB, Oracle, OSB, service bus, SOA, Web Services, weblogic | Tags: , , , , , , , | Leave a comment

Enable/Disable EDN Events Logging in SOA 11g

Very Nice article on Enabling/Disabling EDN Events Logging.

Did you like this? Share it:
Categories: Uncategorized | Leave a comment

2012 in review

The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

4,329 films were submitted to the 2012 Cannes Film Festival. This blog had 27,000 views in 2012. If each view were a film, this blog would power 6 Film Festivals

Click here to see the complete report.

Did you like this? Share it:
Categories: Uncategorized | Leave a comment

SOA, Cloud and Service Technology Symposium a super success!

Very nice post about the SOA Symposium held in London.. A lot of informative presentation links

Did you like this? Share it:
Categories: Uncategorized | Leave a comment

OSB: Remote Server Connection Issue from OEPE

Problem:

I am having an issue while trying to connect to my remote OSB server from my eclipse IDE installed as per instructions on oracle blog as per my previous post.

I am running the prebuilt Oracle VBox Images for SOA 11.1.1.6.0

Downloaded from http://www.oracle.com/technetwork/middleware/soasuite/learnmore/vmsoa-172279.html

Configured it for SOA_OSB_DEV Domain and started the servers which I am successfully able to launch from my local machine browsers

I have then installed OEPE from the oracle website [Oracle WebLogic Server 11gR1 (10.3.6) + Coherence - Package Installer]

And the installed the OSB using http://download.oracle.com/otn/nt/middleware/11g/111160/ofm_osb_generic_11.1.1.6.0_disk1_1of1.zip

Note: I only installed the OSB IDE as I do not want to configure the OSB Server on my machine but utilise the Remote server which is why I am using the Oracle provided Vbox images.

I have tried a few things I checked the firewall on the remote Linux box and it’s disabled and so is the selinux.

Also disabled all firewalls on my local machine

PS: I am able to connect to another WebLogic server [non OSB] on a different Vbox image, and I am able to connect to the WebLogic application server from Jdeveloper on both the Vbox images including this one.

Solution/Workaround:

The issue was with the config.xml file in the /user_projects/domains/<domainname>/config directory on the server.

For some reason it’s got 10.3.5.0 when the VM says it’s for 11.1.1.6.0.

So, in the file just had to make a change 10.3.5.0 to 10.3.6.0 at 2 places and restarted the server and eclipse.

“domain-version” and “configuration-version” from 10.3.5.0 to 10.3.6.0

Did you like this? Share it:
Categories: ESB, OSB, service bus, SOA, Uncategorized | Tags: , , , , , , , | 2 Comments

Installing OSB ID/Eclipse for OSB Development

I came across this very useful post on the Oracle Blog and thought to copy it to this area as it might be useful for us all in case oracle moves the original post.

Installing Eclipse for OSB Development

OSB provides 2 methods for OSB development, the OSB console, and Eclipse. This post deals with a typical development environment with OSB installed on a remote server and the developer requiring an IDE on their PC for development. As at 11.1.1.4 Eclipse is only IDE supported for OSB development. We are hoping OSB will support JDeveloper in the future.To get the download for Eclipse use the download WebLogic Server with the Oracle Enterprise Pack for Eclipse, e.g. Oracle WebLogic Server 11gR1 (10.3.4) + Coherence + OEPE – Package Installer (wls1034_oepe111161_win32.exe).To ensure the Eclipse version is compatible with your OSB version I recommend using the Eclipse that comes with the supported WLS server, e.g. OSB 11.1.1.4 you would install WLS 10.3.4+oepe.

The install is a 2 step process, install the base Eclipse, then install the OSB plugins. In this example I’m using the 11.1.1.4 install for windows, your versions may differ.

  1. You need to download 2 programs, WebLogic Server with the oepe plugin for your OS, and the Oracle Service Bus which is generally generic. Place these files in a directory of your choice.
  2. Start the executable
  3. I create a new Oracle Home for this installation as it don’t want to impact on my JDeveloper install or any other Oracle products installed on my machine.
  4. Ignore the support / email notifications
  5. Choose a custom install as we only want to install the minimum for Eclipse. If you really want you can do a typical and install everything.
  6. Deselect all products then select the Oracle Enterprise Pack for Eclipse. This will select the minimum prerequisites required for install.
  7. As I’m only going to use this home for OSB Development I deselect the JRockit JVM.
  8. Accept the locations for the installs.
  9. If running on a Windows environment you will be asked to start a Node Manger service. This is optional. I have chosen to ignore.
  10. Select the user permissions you require, I have set to default.
  11. Do a last check to see if the values are correct and continue to install.
  12. The install should start.
  13. The install should complete successfully. I chose not to run the Quick Start.
  14. Extract the OSB download to a location of your choice and double click on the setup.exe. You may be asked to supply a correct java location. Point this to the java installed in your OS. I’m running Windows 7 so I used the 64bit version.
  15. Skip the software updates.
  16. Set the OSB home to the location of the WLS home installed above
  17. Choose a custom install as all we want to install is the OSB Eclipse Plugins.
  18. Select OSB IDE.
  19. For the rest of the install screens accept the defaults.
  20. Start the install
  21. There is no need to configure a WLS domain if you only intend to deploy to the remote server. If you need to do this there are other sites how to configure via the configuration wizard.
  22. Start Eclipse to make sure the OSB Plugin has been created. In the top right drop down you should see OSB as an option.
  23. Connecting to the remote server, select the Server Tab at the bottom
  24. Right-click in that frame and select Server.
  25. Chose the remote server version and the hostname
  26. Provide and name for your server if necessary, and accept the defaults
  27. Enter connection details for the remote server
  28. Click on the Remote server and it should validate stating its status.Now you ready to develop, Happy developing!
Did you like this? Share it:
Categories: Uncategorized | Tags: , , , , , | Leave a comment

OER and OBI Publisher Reports

Came across this useful document by Sreeni

 

[slideshare id=5177049&doc=csreenimyslidesintegratingobipublisherwithoerforreports-100910214437-phpapp01&type=d]

Did you like this? Share it:
Categories: Uncategorized | Tags: , , , | 1 Comment

Harvesting of Assets in OER Part 1 – Command Line

Using the Harvester the metadata can be submitted to Oracle Enterprise Repository either from the command line, from Oracle JDeveloper, or using an Ant task

We would be covering only Harvesting Assets from Command Line in this post

First you need to obtain the Harvester which is bundled with the OER installation.

The Harvester is available in 11.1.1.x.x-OER-Harvester.zip, at the following location:

<ORACLE_HOME>/repositoryXXX/core/tools/solutions/11.1.1.x.x-OER-Harvester.zip

 

We refer to the directory that you extract the 11.1.1.x.x-OER-Harvester.zip file to as the <Harvester Home> directory.

 

One can easily bootstrap their Oracle Enterprise Repository using the Harvester from the command-line.

Command-line harvesting allows organizations to harvest:

  •  Individual files
  • Directories of files
  •  Remote files
  •  Files residing in artifact stores
  •  Files residing on Oracle MetaData Store (MDS)

 

Open the XML file HarvesterSettings.xml located at <Harvester Home> and modify the following XML to point the Harvester to an Oracle Enterprise Repository instance with the correct credentials:

<repository>

<uri>http://localhost:7101/oer</uri>

<credentials>

<user>smith</user>

<password>*****</password>

//To ensure security, the password must be encrypted.

//The password encryption tool (encrypt.bat/encrypt.sh), which is located in

<ORACLE_HOME>/repositoryXXX/core/tools/solutions/11.1.1.x.x-OER-PasswordTools.zip,

allows you to encrypt

// the passwords that are stored in the Harvester configuration

// (HarvesterSettings.xml) file.

</credentials>

<timeout>30000</timeout>

</repository>

 

Alternatively, the repository connection information can also be passed as parameters to the command line utility as follows:

 

C:testharvester> harvest -url http://localhost:7101/oer -user

admin -password <password> -file c:testsamples

Executing this would allow you to Harvest the contents to OER.

 

Did you like this? Share it:
Categories: Uncategorized | Tags: , , , | Leave a comment

Importing AIA Solutions Packs to Oracle Enterprise Repository

If you want to import the core AIA components (EBOs, EBMs, etc.) to Oracle Enterprise Repository, you just need to dowload the three AIA Solution Pack files. Prerequisite for doing this is the Harvester Solution Pack details of which are not covered here 11.1.1.6.0-OER-Harvester-Solution-Pack.zip – found inside OER’s folder (/repository111/core/tools/solutions) The details and download location of AIA Solution pack artifacts are referenced by this Support Note (1111452.1). You then need to import them using OER’s Import/Export Utility following the sequence below:

  • AIA-Types-Solution-Pack.zip
  • AIA-Assets-Solution-Pack-part1.zip
  • AIA-Assets-Solution-Pack-part2.zip

Following are screen shots on how to import Oracle AIA solution Packs to Oracle Enterprise Repository

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

That completes the harvesting of AIA Solution Packs to OER.

You should now be able to see them in the OER console under the available Assets        

Did you like this? Share it:
Categories: Uncategorized | Tags: , , , , , , | Leave a comment