Transaction

Does JMS API Specifications support Transaction?

Yes. When creating session from JMS Connection, you can mention it make is session transacted or not:

connection.createSession(booleanTransacted, intAcknowledgementMode)

Acknowledgement mode is ignored when the session is transacted.

JMS transaction is at session level. That mean ALL the messages that are send/consumed using one session will be ATOMIC.