Tuesday, March 23, 2010

BPEL 10g: Clustering with JGroups on OC4J and Weblogic

Using a cluster with Oracle SOA Suite with BPEL is more or less straight forward. BPEL is using JGroups for clustering. It is used for process deployed, process state changes and process undeployment. Most likely user will use the out-of-the-box feature of JGroups. This is based on multicasting. I have written a cluster document that was based on mulicast earlier.

Using multicasting can be an issue in the network. Multicast is based on UDP and is often blocked in the network. I encountered this issue at a few customers. The solution is rather simple, instead of using UDP/multicast we use TCP to point to the nodes in the cluster.

In the next example, we have two nodes; node1 and node2. They will use port 7900 with a range of 3 to broadcast the BPEL process changes.

On each node:
cd /u01/appl/p1bplpe/product/OracleAS_1/bpel/system/config
mv jgroups-protocol.xml jgroups-protocol.xml.old
cat >> jgroups-protocol.xml << EOF 
<config> 
  <TCP start_port="7900" loopback="true"
      send_buf_size="32000" recv_buf_size="64000"/>
 <TCPPING timeout="3000" initial_hosts="node1[7900],node2[7900]" port_range="3" num_initial_members="3"/>
  <FD timeout="2000" max_tries="4"/>
  <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
  <pbcast.NAKACK gc_lag="100" retransmit_timeout="600,1200,2400,4800"/>
  <pbcast.STABLE stability_delay="1000" desired_avg_gossip="20000" 
down_thread="false" max_bytes="0" up_thread="false"/>
  <VIEW_SYNC avg_send_interval="60000" down_thread="false" up_thread="false" />
  <pbcast.GMS print_local_addr="true" join_timeout="5000" 
join_retry_timeout="2000" shun="true"/>
 </config> EOF 
 
cp jgroups-protocol.xml jgroups-protocol.xml.new
Restart the nodes

Wednesday, March 17, 2010

JDeveloper 11g: SSL handshake error

Oracle JDeveloper always connects over HTTPS (SSL) to your SOA Server. In my cluster setup I ran into an issue, that it could not setup the SSL connections.

Creating HTTPS connection to host:node2.vijfhuizen.local, port:8021
unable to find valid certification path to requested target

This issue comes that the runtime Java of JDeveloper does not have the correct certificates loaded in your keystore. You should copy these certificates in your local keystore (cacerts), this file is located in $JAVA_HOME/jre/lib/security.

Implementing this solution is written here.
$JAVA_HOME/bin/javac InstallCert.java
Then
mv $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.org
cp jssecacerts $JAVA_HOME/jre/lib/security

Weblogic SOA Perfomance boost

I saw a strange behaviour with SOA Suite 11g. A customer was complaining that the server was slow, it took them an amount of time to create a domain or even starting a domain. We known that it will take some time to startup SOA 11g, the application needs to be started, SCA artefacts needs to be loaded, etc.


It took some time to found out what the cause was. It was the following combination. The servers are running on VMWare ESX server with Linux.


The cause was the behaviour of the '/dev/random' and '/dev/urandom' devices. Those devices are generating random numbers. It is the combination of VMWare and the '/dev/urandom' device, that causes problems. In this case the '/dev/urandom' is locked when a process is accessing it. That resultat that other processes must and will wait until the devices is available.


Off course, there is a solution for it. At last we found out that someone else also run into this issues! Credits and kuddos to Oleg Shpak!



We can solve this as follows, four solutions:

1) Change the java configuration in a way that '/dev/urandom' is not mapping directly to '/dev/random'. Change the file $JAVA_HOME/jre/lib/security/java.security:
securerandom.source=file:/dev/urandom
into 
securerandom.source=file:/dev/./urandom

2) Add an Java option during startup of the JVM: .
-Djava.security.egd=file:/dev/./urandom


3) Make sure that the /dev/random is always filled, via the rngd daemon. This solution works for all application running on the OS.

4) Not nice, but it works:
mv /dev/random /dev/random.org
ln -s /dev/urandom /dev/random

Tuesday, March 09, 2010

SOA 11g PS2: Patch set 2, new features

Read this:

http://blogs.oracle.com/soabpm/2010/03/11gr1_patchset_2_111130_soa_fe.html

Summary:
  • Re-Introduction of BPEL domains, now called partitions
  • Spring Component Implementation
  • Full and complete BPEL 2.0
  • Improved audit trailing
  • Improved transaction handling
  • Support of Get/Post binding level
  • Full BPMN 2.0 support

Friday, March 05, 2010

SOA still a hype?

Introduction

Some people are thinking dat Service Oriented Architecture is a hype while for others it's common sense. I often hear this comment from customers not
from partners. I heard this signal at an Oracle Event "Oracle Fusion Middleware 11g: Weblogic or Wait".

As I work as consultant with this Oracle SOA technology for many years, for me this is common knowledge. As this is also the case by partners and colleagues, I assume this is also the case at the customer.

So is SOA a hype or not? How about technologies as complex Event Procesessing (CEP), Service Composed Architecture (SCA).
It depends from which perspective you look at it. Every customer is different and unique. Depending on on the technology that the customer is using, the knowledge of the staff , the past experiences the SOA technology and the branch of the customer. Some of them will find it a hype, while for others it is obvious.

SOA is not a just walk in the park. Every one carries his own bag of experience. Starting with SOA technolgy will take through a learning curve. This curve is as follows:
At the beginning you will be dissapointed on on the new technology. You need to implement more steps for a simple action, for example an insert in a table. But during time and experience you will see the benefits; such as re-usability, business process flow implementation. What I see at most customers using the SOA technolgoy, they need to step out of the current view to the application and think in business process flow. Most users run monolithic applications, or silo apoplication, for many many years. The often result thar functional owners of these application are think in entities and screens. The business process flow is within their head and implemnented over different applications. This is were SOA comes in. It can/must/will/is able to take over the process control of this functional business flow.


So how do we implement a service oriented architecture successfully? There are three subjects to cover:
  • Organisation
  • People
  • Project
Organisation
The organisation must be ready for these type of projects. Therefore the organisation should execute a SOA assesment. In this assessment various parts of the organisation is measured on their maturity on SOA. This assessment show the current status to SOA and what steps to take to increase the maturity level.



People
The people should be trained, from technical point of view as well from functional point of view. Technical training can be done via the normal ways; Oracle University; hire consultants to train the technical people. The functional people should also be trained. They should now the new way of approaching this new implementation and usage of this architecture. The should be trained to think and describe in processes and business flows.

Project
In the beginning, start with a small project that is easy to implement and add values to the business. This project should create a win-win situation for every one. Because these type of projects is new, everyone should learn and benefit from it. Design and Implement this project with expiernced people. The are able to succeed in these kind of projects and they can guide and train the organisation.