Tuesday, June 16, 2009

SOA Suite's JMS adapter connecting to web logic queue

These are the configuration changes you need to do in order to make your JMS adapter working with weblogic queue.

1.>copy weblogic.jar in the
$ORACLE_HOME/j2ee//connectors/JmsAdapter/JmsAdapter directory

weblogic.jar can be found in following directory of weblogic installation

bea/weblogic92/server/lib

2.>Change Server.xml

It can be found in following location

SOA_HOME/2ee/oc4j_soa/config

Add the property 'environment-naming-url-factory-enabled="true"' in the
server.xml config file for your instance for any application that includes weblogic.jar from WebLogic 9.x

So your server.xml should look like this after making the changes



xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/application-server-10_1.xsd"
localhostIsAdmin="true"
application-directory="../applications"
check-for-updates="adminClientOnly"
deployment-directory="../application-deployments"
connector-directory="../connectors"
environment-naming-url-factory-enabled="true"
schema-major-version="10" schema-minor-version="0"
>

3.>Add connection factory properties in your oc4j-ra.xml as per examples given below

a)FOr queue




b)For Topic




Now we have some unknown properties over here

1>global-jndi-name-of-your-non-XA-jmsconnectionfactory-in-weblogic

2>your-server-name

3>port number

4>username

5>Password

We will take each of them one by one.

1>global-jndi-name-of-your-non-XA-jmsconnectionfactory-in-weblogic

By default the connection factory in a weblogic is xa enabled.

To verify this Go to your JMSModule

Select the connection factory

Click on Transaction tab




Click on lock and edit tab on left most tab and uncheck the xa transaction

SAve the changes and restart the server.YOu need to start your managed server.

so now the transaction is non xa.

Now the conenction factory which have enabled for non -xa we have to choose the jndi name of that particular connection factory as the global-jndi name of connection factory




2>your-server-name

It is obvously the server name or you can also use the ip address for the server.

3>port number

This is confusing.We have to use the port number for managed server and nor Admin server.It is very common question as we are creating the queues in admin server then why we are using the managed server port number.The reason is that if you will choose the target for that queue/connection factory it is managed server only so the port number will be the managed server port number.

4>Username

It will be the user name with which you log in to weblogic console.

5>password

Same for passsword.

so once these steps are comleted all the configuration steps are completed.

now we will go ahead and deploy a simple process from jdeveloper.

How we create a connection with weblogic in jdeveloper i have already covered in my very first post.

So now we will check what all parameters are required in jdeveloper to successfully deploy this process.

We always come across one common issue in jms adapter i.e.

The Adapter Framework was unable to establish an outbound JCA connection due to the following issue: ORABPEL-12141
ERRJMS_CONN_FAC_NOT_FOUND.
Unable to instantiate connection factory. JMS adapter was unable to look up the connection factor NotificationSenderQueueConnectionFactory neither through JNDI nor instantiate it as a Java class


nested exception is:
ORABPEL-12511
Adapter Framework unable to create outbound JCA connection.

If you will follow all the steps as per mentioned you can avoid these errors and finally see your message in JMS queue.

4 comments:

Anonymous said...

There are 2 weblogic domains 1 & 2. Domain 1 hosts the JMS queue and domain 2 hosts the BPEL process. The BPEL process in domain 2 uses JMS adapter to get messages from domain 1. With queues on Weblogic domain 1, is XA transactions supported for the SOA suite 10.1.3.4 BPEL process JMS Adapter on weblogic domain 2?

Mikku said...

What is your exat requirement?why do you want to have two domains and queues in another domain?
When we create an adapter we provide the intial context factory where in we define the server details from where queue resides
So if you are able to connect to the queue i don't feel you will be having any issues using XA.

Mikku said...

You can use either bridge

http://soa-bpel-esb.blogspot.com/2011/04/configure-message-bridge-in-weblogic.html

or SAF

http://soa-bpel-esb.blogspot.com/2011/04/store-and-forwardsaf-in-soa-suite-11g.html

or Foreign server to do the same

http://soa-bpel-esb.blogspot.com/2011/03/how-to-use-foreign-server-to-connect-to.html

Anonymous said...

magnificent submit, very informative. I wonder why
the opposite specialists of this sector do not understand
this. You must proceed your writing. I'm confident, you have a great readers' base already!