Oracle Fusion Middleware 11g (ofm11g) on Centos 5

The new Oracle Fusion Middleware 11g just got released a few days back, so time to play with it!
Oracle did a great job on the installation guide and quickstart again, so installation wasn’t a real hard job.

A short overview of the steps we need to follow

  • Install Oracle Database (i used OracleXE)
  • Create Schemas for Oracle SOA Suite and Oracle BAM by using Repository Creation Utility (RCU)
  • Install Oracle WebLogic Server and Create the Middleware Home
  • Installing Oracle SOA Suite
  • Configuring Oracle SOA Suite
  • Post-Installation Tasks
  • Installing Oracle SOA Suite Design-Time Components

On the download page i downloaded the next components

Quiet some software to install before we can get started.
I assume you already have the db running so lets get on to the next step.

Create Schemas for Oracle SOA Suite and Oracle BAM by using Repository Creation Utility (RCU)

Unzip ofm_rcu_linux_11.1.1.1.0_disk1_1of1.zip and run ./rcu

I needed to change the next parameters in the db

  • alter system set PROCESSES=500 scope=SPFILE;
  • alter system set open_cursors=500 scope=SPFILE;

And the next parameters in the linux kernel (/etc/security/limits.conf)

# tbv oracle soa suite 11g
oracle          hard    nofile  4096
oracle          soft    nofile  4096

And a list of missing/wrong version of system packages

Root
Checking operating system certification
Expected result: One of enterprise-4,enterprise-5,redhat-4,redhat-5,SuSE-10
Actual Result: redhat-5
Check complete. The overall result of this check is: Passed

Checking recommended operating system packages
Checking for gcc-4.1.0-28.4; Not found. Failed <<<<
Checking for gcc-c++-4.1.0-28.4; Not found. Failed <<<<
Checking for setarch-1.6-1; found setarch-2.0-1.1-i386. Passed
Checking for sysstat-5.0.5-1; Not found.  Failed <<<<
Checking for libstdc++-4.1.0-28.4; found libstdc++-4.1.2-44.el5-i386. Passed
Checking for libstdc++-devel-4.1.0-28.4; Not found. Failed <<<<
Checking for compat-libstdc++-296-2.96-132.7.2; Not found.  Failed <<<<
Checking for compat-db-4.1.25-9; Not found. Failed <<<<
Checking for control-center-2.8.0-12; found control-center-1:2.16.0-16.el5-i386.  Passed
Checking for glibc-common-2.3.4-2.9; found glibc-common-2.5-34-i386.  Passed
Checking for binutils-2.16.91.0.5-23.4; found binutils-2.17.50.0.6-9.el5-i386.  Passed
Checking for make-3.80-202.2; found make-1:3.81-3.el5-i386. Passed
Check complete. The overall result of this check is: Failed <<<<
Checking kernel parameters
Checking for VERSION=2.6.18; found VERSION=2.6.18-128.1.16.el5. Passed
Checking for hardnofiles=4096; hardnofiles=1024.  Failed <<<<
Checking for softnofiles=4096; softnofiles=1024.  Failed <<<<
Check complete. The overall result of this check is: Failed <<<<
Checking Recommended glibc version
Expected result: ATLEAST=2.5-12 
Actual Result: 2.5-34
Check complete. The overall result of this check is: Passed

Checking physical memory
Expected result: 1024MB
Actual Result: 1196MB
Check complete. The overall result of this check is: Passed

Install all the correct packages (yum available/yum install), and ignore the other warnings during install.

rcu1
rcu2
Setup your own db instance
rcu3
rcu4
I selected just all the components
rcu5
rcu6
rcu7
rcu8
rcu9
rcu10
rcu11

Install Oracle WebLogic Server and Create the Middleware Home

chmod the bin file and run ./oepe11_wls1031_linux32.bin
I had some ‘wrong class version exceptions’, so installed java6 update14.

wls1
Create a new home
wls2
wls3
wls4
wls5
wls6
wls7
wls8
wls9
wls10
wls11

Installing Oracle SOA Suite

Unzip ofm_soa_generic_11.1.1.1.0_disk1_1of1.zip and run ./runInstaller in Disk1

soa1
soa2
soa3

Configuring Oracle SOA Suite

Now we need to configure the soa suite installation with the Oracle Fusion Middleware Configuration Wizard.
Go to

<ORACLE_HOME>/common/bin

and run ./config.sh

soaconfig1
soaconfig2
soaconfig3
Since i used 1 db for all the components, select al the components and config the same db settings
soaconfig4
soaconfig5
soaconfig6
soaconfig7
soaconfig8
soaconfig9
soaconfig10
soaconfig11
soaconfig12
soaconfig13
soaconfig14
soaconfig15
soaconfig16
soaconfig17

Most of the steps are just next, next and a few more next.

Post-Installation Tasks

Start both the AdminServer and the ManagedServers.
AdminServer

<SOASUITE_HOME>/user_projects/domains/domain_name/startWebLogic.sh

ManagedServers

<SOASUITE_HOME>/user_projects/domains/domain_name/bin/startManagedWebLogic.sh soa_server1 (default name)
<SOASUITE_HOME>/user_projects/domains/domain_name/bin/startManagedWebLogic.sh bam_server1 (default name)

On startup it will prompt you for the username/password we used on during installation

Installing Oracle SOA Suite Design-Time Components

For development we will download Oracle JDeveloper 11g R1 (Build 5407).
To be able to create soa projects in it we need to update it with the Oracle SOA Suite Extension.
Go to Help > Check for Updates. Select ‘Oracle Fusion Middleware Products’ in the ‘Search Update Centers’, next and select ‘Oracle SOA Suite Composite Editor 11.1.1.0’.

New consoles (look-and-feel)

weblogic server 10.3.1 console
wlsconsole
enterprise manager
enterprisemanager

Installation is done!
Just a few urls to check if everything went ok

administration server
http://host:admin_server_port (default installation : http://localhost:7001)
wls console
http://host:admin_server_port/console (default installation : http://localhost:7001/console)
enterprise manager
http://host:admin_server_port/em (default installation : http://localhost:7001/em)

Links

Oracle Fusion Middleware Documentation Library
Oracle Fusion Middleware Products Update Center
Oracle11g on CentOS-5, package requirements
Oracle® Fusion Middleware Quick Installation Guide for Oracle SOA Suite11g Release 1 (11.1.1)

Ready to create some nice new fusion apps!

Oracle Service Bus workshop, WAAI project feedback

Yesterday we had the ‘feedback’ day/evening from the WAAI project over at IT-eye.
Part of the idea of the WAAI project is to spread the knowledge inside the company so we all know about he nice upcoming things of the Oracle Fusion 11g stack.

One of my colleagues started with the Oracle BPM presentation and workshop. Some nice info and good exercises to get in touch with the new BPM.
After that the playground was mine.
A few hours of hard work and exhausted colleagues trying to complete all the 3 cases from the workshop.

At the end i planned some time for questions and discussions.
Since most of the colleagues already had experience with the Oracle SOA Suite stack, they could do a good compair on the ‘new’ Oracle Service Bus (OSB) and the ‘old’ Oracle Enterprise Service Bus (OESB).
An overall impression would be quiet positive. They liked the new functionality in the bus althought some of the functionality needs a bit more knowlegde and experience. But thats what we will all have when we start to using new products.

A few questions which came up

  • If we’re going to use both both Oracle Service Bus and Oracle BPEl, what should we model in the OSB and what should we model in BPEL.
    Maybe longrunning statefull processes in BPEL and keep the OSB mean and clean?
    Or is there some functionality which really needs to be in the bus?
    Are there any guidelines and best practices on how to model this ?
    The possibilities of the OESB weren’t that rich. So most modelling still had to happen in for example BPEL. The OESB would mostly be used for some routing/transformation and virtualization.
    The OSB gives us a lot of functionality for modelling the message flows, so i could imagine functionality which we normally would model in BPEL can be modelled in the OSB itself.
    But would this be the correct ‘role’ of the new bus ?

  • Most of the transformations in the bus make use of the functionality of xquery.
    What are the pro and cons on both xquery and xslt ? When do we use which one ?

After all a good day and i hope my colleagues enjoyed it too.

ALSB Console project out of sync with file system

Short reminder for myself

During development of my alsb projects i clone, rename, move and do all sorts of things to eventually end of with one correct list of projects with good naming convention.
Once in a while when i try to rename for example proxy services back to some old name i already used i get errors about the new name already exists, although i’m pretty sure it’s not in the console anymore.

Short fix

<BEA_HOME>\user_projects\domains\<YOUR_DOMAIN>\sbgen\

Find the ear file with contains your (old) resource with the identifier you tried to use (i couldn’t find any unix command which would let me list the files in the ear, and after that let me search a string on them).
If you found the correct ear (view application.xml in the META-INF dir, the jav:display-name-elements contains your identifier).

Stop wls
Remove ear-file
Start wls and try to rename again, it should be fixed.

BEA WorkSpace Studio, import sbconfig.jar

For alsb development we both use the console and the workspace studio of bea.
So once in a while i need to do some changes in the console and import the sbconfig.jar back into the ide.
In the current workspace i delete all projects and ‘try’ to import the sbconfig.jar.

The next error pops up :

Import failed: Validation failed with diagnostic messages. Diagnostics for WSDL <projectname>/WSDLs/<my wsdl>
ERROR: <0> Validation of WSDL <projectname>/WSDLs/<my wsdl> failed:

The simple fix.
Drop the workspace, create a new one and import the jar the in clean workspace. Guess it leaves some artifacts in the workspace which abort the import process.

Oracle Service Bus, use of shared resources

At the moment i’m busy with a migration of an alsb 2.6 enviroment to an alsb 3.0 enviroment.
In the alsb processes extra functionality is invoked by making use of the java call outs.
Nothing wrong with this if you ask me, the only thing which i’m wondering is, wont these java call outs mess up the transactional context of alsb processes itself.

At the moment the libraries which are being used are deployed with every servicebus process itself.
So we have/had some sort of default structure like

  • business services
  • proxy services
  • lib
  • wsdl

Works fine, but not really the ideal situation if you have reusable resources over servicebus projects.
You’re able to reuse the components from other projects and link to them by using relative links (for example when you want to reuse xsd’s from other projects) or link to the library of an other servicebus project.

These situations force you to create dependencies between the projects, something we don’t want either.

Solutions

First solution

The solution we implement at the moment to keep everying on-going is the next.
We created a ‘Shared Resources’ servicebus project with folders for libraries/wsdl/xsd/business services/etc. Every resource which will be reused by other projects will be created in here. Every servicebus project itself which is going to use a resource will link to this project and the resource it needs.

This works great if you’re working with components which exists only in the servicebus itself.
When integration is happening and for example applications from vendors are integrating with our servicebus projects they could use certain resources from the ‘shared resources’ project. But in this case my servicebus project will be some sort of repository of resources available for not only the servicebus projects. So i’m creating an extra dependency between the servicebus and the other applications.

Better solution (imho)

Remove all the re-usable resource from the servicebus itself. We need to bring those to some higher level of sharing of which both the servicebus and the other applications will make use. In this case a product like ‘Oracle Enterprise Repository’ could be used.
In this repository we can store all the resources and artifacts which will be used enterprise wide.

To make use of a java call out, we need to create the resource in the servicebus project itself. So we can’t store these libraries on the repository.
Maybe a short coming which is ok for this situation.

If we want to store these java libraries on a repository we have the intention to share these enterprise wide. But in these situations we must investigate if a plain java class is the best way to make the functionality available or should we ‘service enable’ the java classes so they can be used more easily for integration in other projects.
The userguide / Usage Guidelines gives as a few situations/best practices when to use ejb functionality instead of plain pojos.

Do we have functionality delivered by the java classes which is only used in the servicebus projects to support the servicebus process itself then we could just registrate the libraries in the shared resources servicebus project (jar resource) and reuse it from here.

Conclusion

For reuse of resources and artifacts in servicebus projects we could use the next setup.

Shared Resources servicebus project for storing the business services/proxy services/servicebus-only used java libraries/etc.
Enterprise Repository for storing resources like xsd/wsdl/etc
Service enable java classes which are used enterprise wide,so we don’t need to store functionality on several places

Any of you doing osb/alsb projects and have a better ‘solution’ for these situations ?

Oracle Workshop for Weblogic 10gR3: “requested array is larger than heap”

little note to myself

During development for the osb pop-ups from eclipse keep coming by : “requested array is larger than heap”
Fix for me :
http://forums.oracle.com/forums/thread.jspa?threadID=847409&tstart=0

goto :

<BEA_HOME>\osb30\user_projects\workspaces\<YOUR_WORKSPACE>\.metadata\.plugins\org.eclipse.wst.server.core\publish\

and delete the publish*.dat

change startup settings of eclipse
see help from workshop ide itself, topic “Allocating enough memory and solving OutOfMemoryErrors”
eclipse -vmargs -Xmx

The Forrester Wave: Enterprise Service Buses, Q1 2009

Last month The Forrester released their evaluation of some of the vendors of enterprise services buses for Q1 of 2009.
It gives a good overview of the core and extended functions of the daily ESBs and the strengths and weaknesses of the vendors (for both the licensed and open source esbs).

Go read it!