• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Rob Spoor
  • Tim Cooke
  • Junilu Lacar
Sheriffs:
  • Henry Wong
  • Liutauras Vilda
  • Jeanne Boyarsky
Saloon Keepers:
  • Jesse Silverman
  • Tim Holloway
  • Stephan van Hulst
  • Tim Moores
  • Carey Brown
Bartenders:
  • Al Hobbs
  • Mikalai Zaikin
  • Piet Souris

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

 
Ranch Hand
Posts: 281
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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?
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic