Link to home
Start Free TrialLog in
Avatar of skarthikeyan100
skarthikeyan100

asked on

How to configure JMS Queue?

I have a websphere 6.0 running. I need to create and/or delete JMS Queues dynamically using a java class. I used AdminClient and added destinations in resources.xml as follows

<factories xmi:type="resources.jms.internalmessaging:WASQueue" xmi:id="WASQueue_1080102412281" name="testQ" jndiName="queue/testQ" persistence="APPLICATION_DEFINED" priority="APPLICATION_DEFINED" expiry="APPLICATION_DEFINED"/>

I'm not able to do a lookup on this queue.

InitialContext ic = new InitialContext();
ic.lookup("queue/testQ");

throws a NameNotFoundException.

I'm able to find  entries for "testQ" in WebSphere JMS Provider screen in admin console.

How do i lookup this queue?

This link points to documentation
http://publib.boulder.ibm.com/infocenter/wsphelp/topic/com.ibm.websphere.nd.doc/info/ae/ae/tmj_adm23.html

Documentation says as follows

"To make a queue destination available to applications, you need to host the queue on a JMS server. To add a new queue to a JMS server or to change an existing queue on a JMS server, you define the administrative name of the queue to the JMS server, as described in Managing WebSphere internal JMS servers."

 But i'm not able to find JMSServer under Servers in Navigation pane.
Avatar of vzilka
vzilka

Are you sure you saved your wsadmin session?
Avatar of skarthikeyan100

ASKER

Yes i saved session and it is available in resources.xml file, Do i have to install anything else for JMS Server to come up in navigqation pane?
When installing websphere, did you make sure you installed the messaging component?
If not, you should see in the server.log file the message "Messaging is not started" (or something similar, it should be in the begining of the log file)
I did a full installation of Websphere 6. I assumed that it would install JMS components too.
You are right. Server log says that embedded messaging was not installed. Is it possible to install it separately?
I don't know about 6, but in 5 this is a known issue sometimes.
Looks at this question - https://www.experts-exchange.com/questions/20907165/Error-during-EAR-deployment-Embedded-Messaging-has-not-been-installed.html
It should walk you through it.
Thanks for your help, but i needed this in version 6. We need to define SIB Queue too for every JMS Queue. SIB Queue is the physical destination. We can use following script to create a queue.

SetJMSScope node

# create a ConnectionFactory
CreateJMSConnectionFactory "MyJMSConnFactory"
ModifyJMSConnectionFactoryProperties MyJMSConnFactory [list [list BusName "DEFAULT"]]

# create a Queue
set QNAME "MyQueue"
set JSDest "MySIBQueue"

CreateJMSQueue "$QNAME"
ModifyJMSQueueProperties "$QNAME" [list [list QueueName "$JSDest"]]

$AdminConfig save


I trhink that the installation issue is the same.
Without installing the JMS provider, your code will not run.
This works, but i have to restart after configuring JMS Queue to do a lookup using InitialContext. Otherwise, the call

InitialContext ic = new InitialContext();
ic.lookup("MyQueue"); //This call fails.

Wnen i restart the appServer, it works fine. Is there way to enable this jndi binding at runtime?
I am not sure what is your question. YOu mean do you need to restart the client or the server?
I think WebSphere requires an app server restart after configuring a JMS object.
The problem is solved. It is required that either app server should be restarted or an application should be started to do JNDI bindings. What we did is before deploying an application, JMS objects are created and the deployed application is then restarted. Now JNDI bindings occur without any problem. This is possible for us since we deploy an application programmatically in websphere.

Thanks for all your help vzika.
ASKER CERTIFIED SOLUTION
Avatar of Netminder
Netminder

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial