Oracle Service Bus, testing proxy services with Direct Calls

Today i stumbled on one of the features which is available on the testconsole page of a proxyservice.
I was testing some flows in the Oracle Service Bus which made use of a XAConnectionFactory.
The process made use of a proxyservice which gets a message out of a jmsqueue, routes it to an other businessservice, which eventually would put it back on some other queue.

When the process was getting triggered by some other eai component which puts a message in the queue the process would eventually fail.
But when i would try to replicate the problem and test the process from the beginning by using the testconsole on the proxyservice, the process would just complete without errors.

After a close look on the testconsole we see some extra options in the test configuration
testconsole

Direct Call and Include Tracing.

Direct Call

When we dive into the guides we will find the next information.

“Testing proxy services with the direct call option enabled bypasses some important security steps (authentication/authorization), including access control. Oracle recommends that you not use the test service in production systems.

A direct call is used to test a proxy service that is collocated in the Oracle Service Bus domain. Using the direct call option, messages are sent directly to the proxy service, bypassing the transport layer. When you employ the direct call option, tracing is turned on by default, allowing you to diagnose and troubleshoot a message flow in the test console. By default, testing of proxy services is done using the direct call option.

When you use the direct call option to test a proxy service, the configuration data you input to the test console must be that which is expected by the proxy service from the client that invokes it. In other words, the test console plays the role of the client invoking the proxy service. Also, when you do direct call testing, you bypass the monitoring framework for the message. “

directcall

This illustrates a direct call. Note that the message bypasses the transport layer it is delivered directly to the proxy service (P1).

In my case i was testing a proxyservice which made use of jms transport and xaconnectionfactories.
The direct call would skip the transport layer and would not force the xa transaction.
This XA transaction was eventually the problem for my situation. One of the contributers on the xa transaction (custom oracle aq adapter) was for some reason messing up the transaction.
Since i don’t want to change anything on this adapter, i just skip the enforcing of the xa on this message flow.

So be sure when testing the flow and you really want to replicate the original situation (so use the original designed transport mechanismes), to put off the ‘Direct Call’ option.

Resources

http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/transportsdk/developing.html (Co-Located Calls)
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/testing.html (Testing Proxy Services)
Thread: OSB 10gR3: Handling response received from a proxy service

Advertisements

About Eric Elzinga
Eric Elzinga I'm an integration consultant located in The Netherlands. Mainly doing projects based on Oracle integration stacks (Oracle SOA Suite/Oracle Service Bus (OSB)), Java development, and opensource integration products.

4 Responses to Oracle Service Bus, testing proxy services with Direct Calls

  1. Pingback: Oracle Service Bus, testing proxy services with Direct Calls | Oracle .. Java .. OpenSource .. SOA

  2. Raju says:

    Hi,
    This is Raju. why we are using osb. These can be done in bpel,mediator also.What is the use of proxy in osb. how it works plz reply me…………..

    thanks&regards,
    Raju.

  3. Vijay says:

    Hi,

    I have a question regarding the functionality u were trying to do.
    I have 2 queue’s, queueIn and queueOut in weblogic server. now i want to put the message(SOAP over JMS) in queue1and i am expecting business service (Exposed webservice) should be processed and the response should be posted to response queue.

    can you please help me how to do this functionality?

    Soap Over JMS with weblogic is simple, invoking the webservice with JMS API and i did it successfully but same i want try with OSB on top of weblogic by introducing 2 queues.

    I know its too old post but it will be really helpful if i can get the solution. 🙂

    Thanks
    Vijay

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: