Существует множество правил, касающихся JMS, которые отличаются при использовании его от автономного клиента и от среды Java EE. Одна вещь, которая приходит на ум, - это возможность создать JMS Listener.
И старая (но все еще актуальная цитата из спецификации 1.3):
... Note that the JMS API creates threads to deliver messages to
message listeners. The use of this message listener facility may be
limited by the restrictions on the use of threads in various
containers. In EJB containers, for instance, it is typically not
possible to create threads. The following methods must not be used by
application components executing in containers that prevent them
from creating threads:
.
- javax.jms.Session method setMessageListener
- javax.jms.Session method getMessageListener
- javax.jms.Session method run
- javax.jms.QueueConnection method createConnectionConsumer
- javax.jms.TopicConnection method createConnectionConsumer
- javax.jms.TopicConnection method createDurableConnectionConsumer
- javax.jms.MessageConsumer method getMessageListener
- javax.jms.MessageConsumer method setMessageListener
.
In addition, use of the following methods on javax.jms.Connection
objects by applications in Web and EJB containers may interfere with the
connection management functions of the container and must not be used:
- setExceptionListener
- stop
- setClientID
A J2EE container may throw a JMSException if the application component
violates these restrictions. ....
Полагаю, что нельзя создавать несколько сеансов для одного соединения в среде Java EE, поскольку эти соединения управляются, и таким образом их трудно разделить. Но, надеюсь, кто-то может дать более определенный ответ.
Обратите внимание, что новая версия 2.0 JMS для Java EE 7 имеет лучшее и более четкое согласование между базовой спецификацией JMS и Java EE как одной из ее целей. Смотрите здесь: http://jcp.org/en/jsr/detail?id=343