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?