Tuesday, February 16, 2010

SOA 11g: Cluster installation

This article is a summary of the document you can download that describes in detail how to install and configure an Oracle SOA Suite11g installation. A previous article was written that was based on SOA 10g. This installation is a straight forward cluster installation that assumes the following components.
on the in a clustered environment.
  • 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 11g 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 11g, patch set 1 (ps1):
  • Oracle Weblogic Server
  • Oracle SOA Suite 11g
A few assumptions have been made:

The software is already installed:
A database is available and configured with the SOA 11g repository schema's; such as DEV_SOAINSTA; DEV_MDS; etc.

We will install this software on each node. On each node we create a cluster and within that cluster two managed servers; soa_server and bam_server. On one of each server, node #1, we configure the admin server. On each server we install the Oracle HTTP Server that will route the requests to the two servers.

The approach of the installation is as follows.
  1. Configure Weblogic Server cluster domain definition.
  2. Pack and unpack cluster domain.
  3. Apply Java Object Cache
  4. Apply Oracle Coherence for cluster deployment
  5. Start environment
  6. Configure Oracle HTTP Server on each node
This article and the document could not be created without the following documents.
The document can be download here.

Post config, based on best practise:
  • Enabled production mode in console and in domains/soadomain/bin/setDomainEnv.sh
  • Set logging levels to Warn everywhere (servers, domain broadcaster) and enabled logs rotation.
  • Checked Protocols->Enable Tunneling for all servers so SOA solution could handle t3 and iiop protocols
  • Changed File Stores location to filestore/* subdirectories (to make cleanup easy).
  • Specified valid listen address for AdminServer.
  • Specifiedhostname for all managed servers

Have fun.


Friday, February 05, 2010

SOA 11g: Coherence cluster setup on laptop

When you follow the instruction to setup a SOA 11g cluster, you should have multiple servers, loadbalancers, etc. But sometimes you want to setup a SOA 11g cluster on your local machine/laptop. You can still follow the instructions in the documentation. But there is one issue regarding clustering fo SOA 11g. This is related to Oracle Coherence. Coherence wants a physical IP address. If you are using a localhost IP adres; and as Coherence it is still using the IP adress of the network card.

If you disable the network card (remove cable / disable wireless), then it will use the localhost settings, but it gives a warning.

To be independent of any IP address on your network card, create two dummy network interfaces.

as root:
# modprobe dummy numdummies=2
# ifconfig dummy1
# ifconfig dummy1

Change your /etc/hosts file to point your nodes to this IP address. node1.vijfhuizen.com node2.vijfhuizen.com

Now you are able to start the managed servers on your local machine as a cluster:

EXTRA_JAVA_PROPERTIES="-Dtangosol.coherence.wka1=node2.vijfhuizen.com -Dtangosol.coherence.wka2=node1.vijfhuizen.com -Dtangosol.coherence.localhost=node2.vijfhuizen.com"
./startManagedWebLogic.sh soa_server1

EXTRA_JAVA_PROPERTIES="-Dtangosol.coherence.wka1=node1.vijfhuizen.com -Dtangosol.coherence.wka2=node2.vijfhuizen.com -Dtangosol.coherence.localhost=node1.vijfhuizen.com"
./startManagedWebLogic.sh soa_server2

Reference info:

Tuesday, February 02, 2010

XPATH / XSLT sorting

As result of the CapeSOA 11g training, some nice solutions and ideas are created. Within this training there is a business requirement to sort particular data to get the cheapest value. There are many ways to determine the cheapest value from a XML payload. One solution is to use XLST off course.

But how about the idea to do this without XLST?

The trick here is to use XPath to select the best item (flight, car, hotel) from the list. Suppose your data looks something like this:
  • Results
    • Result
      • Price
      • ...
    • Result
      • Price
      • ...
    • ...
What you want is the Result, such that is has the lowest price element. You can rephrase this to: "the result such that there is no other result with a lower price". In XPath you can write this as follows: "/Results/Result[not(../Result/Price < ./Price)]". The bit between the square brackets is a filter on what comes directly before it. So "/Results/Result" selects all Result elements, and "[not(../Result/Price < ./Price)]" further refines this to only those results that have the lowest price.

Credits go to jan willem broek for this solution!

Cape SOA 11g

The last 12 months we have been training colleagues on SOA 11g and we have also train a customer. I want to share you with this unique training. What makes this training so unique? It is based on a product development training, that we have compressed into 2 days. In these 2 days, students work on their own to get familiar with the SOA 11g aspects.

Then we execute a 3 day workshop. The students are grouped in teams. Each team should build a complete end-to-end system. This system must be handled as a normal project, but executed within 3 days; this includes skills as ; design, project mangement, communication with other teams.

Each team will develop services and expose them to other teams, but also using services of other teams to create the system based on the requirements we have give. During this workshop team building takes also place. The teams need:
  • Working together
  • Competing each other
  • Sharing experience
Sorry to bother you with this article, but I am too enthusiastic about it.

If you want more info, contact me or look at http://wiki.oracle.com/page/CapeSOA+11g.