Forums Register Login

ConnectionPool or resource-ref for JMS connection for P2P in WAS

+Pie Number of slices to send: Send
This is for a P2P application deployed in WebSphere 5.1.x.

I want to make sure that queueconnections are obtained from a pool and returned to pool.

I see 2 alternative approaches - one with connectionpooling, another with resource-ref.

ConnectionPooling Approach:

1) While configuring queueconnectionfactory in server, we can configure connectionpool.
2) For each message, do following:

- Create QueueConnection.
- Send Message
- Close QueueSession
- Close QueueConnection.

Code is:
try {
qConnection = qConnectionFactory.createQueueConnection();
qSession = qConnection.createQueueSession
(false,Session.AUTO_ACKNOWLEDGE);
sender = qSession.createSender(queue);
message = qSession.createTextMessage();
message.setText(msgText);
sender.send(message);
} finally {
sender.close();
qSession.close();
qConnection.close();
}

Is the approach above fine for sending message from POJO?

resource-ref approach under:
http://developers.sun.com/prodtech/appserver/reference/techart/tip1_june_2003.html
http://www.devx.com/getHelpOn/10MinuteSolution/16630/0/page/3

In resourece-ref approach, I see creating connectionFactory, but I do not see closing it.

InitialContext ctx = new InitialContext();
QueueConnectionFactory qcf_final = (QueueConnectionFactory)
ctx.lookup("java:comp/env/jms/QcfFinal");
Queue queue_final = (Queue) ctx.lookup("java:comp/env/jms/QueueFinal");

QueueConnection queue_conn = qcf_final.createQueueConnection();
QueueSession queue_session =queue_conn.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
QueueSender queue_sender = queue_session.createSender(queue_final);

TextMessage message = queue_session.createTextMessage();
message.setText("This message is from MDB MessageBeanFirst ");
queue_sender.send(message);

In ejb-jar.xml, add the following lines to the end of the MDB declaration (under the <message-driven> element):

<resource-ref>
<res-ref-name>jms/QcfFinal</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
<resource-sharing-scope>Shareable</resource-sharing-scope>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>jms/QueueFinal</resource-env-ref-name>
<resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
</resource-env-ref>

Which alternative (connection pool, or resource-ref) is the correct approach?

Is it not necessary to close connection if resource-ref approach is taken?

Is it fine to use connectionPool approach if message is sent from POJO?
It will give me the powers of the gods. Not bad for a tiny ad:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 764 times.
Similar Threads
Simple Send, Receive (Messaging) Bean
JMS REMOTE CONNECTION Problems
New To JMS
A simple JNDI question....
JMS producer consumer example
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 28, 2024 08:16:00.