Tuesday, April 14, 2009

New Oracle SOA Build Server (OSBS)

An updated version of the Oracle SOA Build server has been released. Based on comments from the field I have made the following changes:
  • Upgraded to Oracle SOA Suite
  • Upgraded to OracleAIA 2.3
  • Added Download particular build nr, instead of only 'Latest' or a tag.
  • Added deployXSD task
  • Restructured properties directory
  • Loading Domain Value Maps (DVM)
  • Added a demo application (HelloWorldPIP)
  • Removed unneeded files
  • Demo application
  • AIA HelloWorld PIP
  • BPEL / ESB HelloWorld samples
The documentation can be found here.

Other features of the tool:
  • Compile BPEL processes
  • Deploy BPEL processes
  • Deploy AIA BPEL processes
  • Deploy ESB Services
  • Deploy ESB Services
  • Undeployment BPEL processes
  • Undeployment ESB services
  • Compile Java projects
  • Deploy Java projects
  • Download code from source control
  • Promote objects to different environments
  • Ignore 'local' ant scripts of ESB and BPEL processes.

The complete download can be found here (130MB).

Wednesday, April 01, 2009

SOA Cluster Installation


  1. Instead of using multicasting for BPEL Jgroups; use TCP, see my article.
  2. Follow Metalinke note 414427.1; add the java option "-Djava.net.preferIPv4Stack=true" in all start/stop option in opmn.xml.
  3. Set -XX:AppendRatio=3 in the Java startup parameters

This article is a summary of the document you can download that describs in detail how to install and configure an Oracle SOA Suite installation in a clustered environment.

The cluster installation is based on the following components.
  • Load balancer
  • Server node #1
  • Server node #2
  • Database
I assume that the database is high available, using Oracle RAC for example. This is shown in the next diagram.

The goal is to install the Oracle SOA Suite software in a cluster on a such way that it is easy to configure, maintain and efficient in usage. We will install the following components based on release with the latest patch set:
  • Oracle Application Server
  • Oracle BPEL Process Manager
  • Oracle Enterprise Service Bus
  • Oracle Web Services Manager
If you read the documents on installing SOA Suite in a cluster, it could lead you into many Oracle Home installations, many oc4j instances. This is valid, but not always usable.

We will install this software into 2 OC4J containers; oc4j_soa and oc4j_esbdt. This install in line with the stand-alone / non clustered environment. The main difference is the fact that we need an additional oc4j, the ESB Design time instance. While in a non-clustered environment, all components are put into one oc4j instance (oc4j_soa). The reason for this difference is the Oracle ESB implementation for a cluster.

The cluster installation will create the following components on each node.
  • One Oracle Home with the complete software tree.
  • Oracle BPEL 10.1.3.x
  • Oracle ESB 10.1.3.x
  • Oracle Services Manager 10.1.3.x
  • Oracle SOA Suite Patch (MLR#5)
  • One J2EE container for Oracle ESB design time
  • One J2EE container for Oracle ESB runtime, BPEL, Web Services Manager
  • One Apache http webserver.
The approach of the installation is as follows.
  1. Install Oracle Application Server, Node #1
  2. Install Oracle Application Server, Node #2
  3. Cluster Applicative Server
  4. Installation Oracle BPEL, # node 1
  5. Installation Oracle BPEL, # node 2
  6. Cluster BPEL Server
  7. Installation Oracle ESB, # node 1
  8. Installation Oracle ESB, # node 2
  9. Cluster ESB
  10. Install Oracle Web Services Manager
  11. Cluster Web Services Manager
  12. Apply SOA Patches

This article and the document could not be created without the following documents.
  • Metalink Note: 470267.1: How To Verify ESB Cluster Configuration
  • Metalink Note: 455714.1: Recommendations for ESB 10.1.3 Cluster Configuration
  • Metalink Note: 728144.1 Installing AIA for Communications on a SOA Cluster
The document can be download here.

Have fun.


File renaming SOA & OSB projects

This article is a bit off-topic. But very usefull in SOA and OSB projects. Sometimes you make a typo mistake in your SOA project. In that case you do a rename of file, but what if you find this typo after you completed your service or BPEL process. Then it is an intensive task to change all the filenames and the content of the files. JDeveloper has some refactoring, Eclipse is a bit better into that.

The following script (Linux bash) does a find and replace on a multiple files including the content of those files. Here is the script.


if [ $# -lt 2 ] ; then
echo -e "Wrong number of parameters"
echo -e "Usage:"
echo -e " $0 findstring replacestring filepattern\n."
exit 1


if [ "$3" = "" ]

echo "find: |${fstring}|"
echo "replace: |${rstring}|"
find . -depth -name "${somefiles}" \! -name ".svn*" -type f -exec sed -i "s/${fstring}/${rstring}/g" {} \;

for FILE in `find . -depth -name "${somefiles}" \! -name ".svn*"`
NEW=`echo ${FILE} | sed -e "s/${fstring}/${rstring}/"`
if [ "${NEW}" = "${FILE}" ]
echo $0: mv ${FILE} ${NEW}
mv ${FILE} ${NEW}