File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes EJB and other Java EE Technologies and the fly likes EJB with CMT sending JMS message Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "EJB with CMT sending JMS message" Watch "EJB with CMT sending JMS message" New topic
Author

EJB with CMT sending JMS message

Nicki Carstensen
Greenhorn

Joined: Apr 27, 2010
Posts: 3
Hi all,

I have a problem with container managed transactions in a stateless session bean sending a jms message.
It seems i can't include my JMS session in the transaction.

Here's the code:

Problem is that no message ends up on the queue when the enqueueOrder method completes, and i would expect the container to commit the transaction. Method completes ok without throwing any exceptions.

However if I change to: the message is placed on the queue when the send(message) call completes. But that means the jms session is not part of the EJB transaction.

My app-server is JBoss5.1, and there are no consumers on the queue.

I'm probably missing something blindingly obvious, but i just can't spot it. Any help appreciated.

Michal Nalewajko
Greenhorn

Joined: Mar 07, 2013
Posts: 7
Hi,

you should commit the session when it is transacional.


Nicki Carstensen
Greenhorn

Joined: Apr 27, 2010
Posts: 3
Hi Michael,

Thanks for your tip, you are correct, if i call session.commit(); the message ends up on the queue.

But that confuses me .
I thought that when using
in a JEE container, the application server would create a resource adapter that wraps the real jms connection, enabling container managed transactions.

Please enlighten me if I'm wrong.
Nicki Carstensen
Greenhorn

Joined: Apr 27, 2010
Posts: 3
Found the solution!

JBoss provides resource adapter for JMS at java:/JmsXA, not at java:/ConnectionFactory in JNDI.

Here is the changed code:

Rest is still the same:

Messages are now placed on the queue when method completes and container commits transaction.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: EJB with CMT sending JMS message