JMS API restrictions
From a JMS specification perspective, the IBM® MQ classes for JMS treat IMS as a Java EE compliant application server, that always has a JTA transaction in progress.
For example, you can never call
javax.jms.Session.commit()
in IMS, because
the JMS specification states that you can not call it in a JEE EJB, or Web container, while a JTA
transaction is in progress. This results in the following restrictions to the JMS API, in addition to those described in Transactional behavior.
Classic API restrictions
javax.jms.Connection.createConnectionConsumer(javax.jms.Destination, String, javax.jms.ServerSessionPool, int
) always throws aJMSException
.javax.jms.Connection.createDurableConnectionConsumer(javax.jms.Topic, String, String, javax.jms.ServerSessionPool, int)
always throws aJMSException
.- All three variants of
javax.jms.Connection.createSession
always throws aJMSException
if the connection already has an existing session active. javax.jms.Connection.createSharedConnectionConsumer(javax.jms.Topic, String, String, javax.jms.ServerSessionPool, int)
always throws aJMSException
.javax.jms.Connection.createSharedDurableConnectionConsumer(javax.jms.Topic, String, String, javax.jms.ServerSessionPool, int)
always throws aJMSException
.javax.jms.Connection.setClientID()
always throws aJMSException
.javax.jms.Connection.setExceptionListener(javax.jms.ExceptionListener)
always throws aJMSException
.javax.jms.Connection.stop()
always throws aJMSException
.javax.jms.MessageConsumer.setMessageListener(javax.jms.MessageListener)
always throws aJMSException
.javax.jms.MessageConsumer.getMessageListener()
always throws aJMSException
.javax.jms.MessageProducer.send(javax.jms.Destination, javax.jms.Message,javax.jms.CompletionListener)
always throws aJMSException
.javax.jms.MessageProducer.send(javax.jms.Destination, javax.jms.Message, int, int, long, javax.jms.CompletionListener)
always throws aJMSException
.javax.jms.MessageProducer.send(javax.jms.Message, int, int, long, javax.jms.CompletionListener
) always throws aJMSException
.javax.jms.MessageProducer.send(javax.jms.Message,javax.jms.CompletionListener)
always throws aJMSException
.javax.jms.Session.run()
always throws aJMSRuntimeException
.javax.jms.Session.setMessageListener(javax.jms.MessageListener)
always throws aJMSException
.javax.jms.Session.getMessageListener()
always throws aJMSException
.
Simplified API restrictions
-
javax.jms.JMSContext.createContext(int)
always throws aJMSRuntimeException
. -
javax.jms.JMSContext.setClientID(String)
always throws aJMSRuntimeException
. -
javax.jms.JMSContext.setExceptionListener(javax.jms.ExceptionListener)
always throws aJMSRuntimeException
. -
javax.jms.JMSContext.stop()
always throws aJMSRuntimeException
. -
javax.jms.JMSProducer.setAsync(javax.jms.CompletionListener)
always throws aJMSRuntimeException
.