Wednesday, September 21, 2011

OSB 11g - Siebel communication

Introduction

For a last five years I'm involved in a huge SOA project in a telco company.
So there were a quite interesting case.

We are migrating some helper processes from BPEL 10g to OSB 11g.
The main purpose for these utilities to mediate between Siebel services and BPEL process and composites.

So during process migration and tests we've got Business Service exception :
Error Code: 10944629 Error Message: Error: Missing body length in response to SWE request!
Metalink has a note ID 1301243.1the main idea of this document that SOAP message is sending to the Siebel service with  parameter Transfer-Encoding: chunked, so you should change the way of message delivery.

Solution
Oracle Service Bus  has a wide range of parameters, and you able to control almost any aspect of communication between business service and service provider. To do it, i just remove mark in Advanced section of HTTP Transport configuration.
Nothing interesting in there, but there are findings, that could be useful for you, my guests. I had to be sure, that we are the source of the issues, and fully realize that.

Utility
The OSB 11g Cluster runs on two OEL 64bit boxes, on the customer site and I don't want to install JDeveloper or any other IDE only for SOAP over HTTP check.
The second point is that I don't want to harvest TCP/IP messages in a log files.
Googling for tcp tunnel for Linux points me to Apache's utility TcpTunnelGui
Gotcha !! Another small investigation and I know where to find it on my server, and on your's too. I've found classes org.apache.soap.util.net.TcpTunnel & org.apache.soap.util.net.TcpTunnelGui in the library $FMW_HOME/osb/harvester/soap-2.2.jar


Proof

1. Create a clones of original proxy and business services
2. Point the Business Service to host with Apache's utility and one of free ports. Let's assume it as 8080.
3. Modify proxy clone, to route on the new business serivce.
4. Run the tunneler :
    $ . $DOMAIN_HOME/bin/setDomainEnv.sh
   $ java -classpath $FMW_HOME/osb/harvester/lib/soap-2.2.jar  org.apache.soap.util.net.TcpTunnelGui 8080 10.6.4.26 80

To run tunneler we should pass three parameters
- port to listen (8080)
- origin host (10.6.4.26)
- origin port (80)
5. Test cloned service.

We easily can see the transport information and SOAP messages.

Regards,

No comments: