У меня был тот же вопрос, и вот что привело меня сюда. Цитировать Doc в этом случае не очень полезно, так как я уверен, что вопрос OP не в том, как использовать сессии или что они делают, а в том, почему они действительно существуют, почему бы не объединить их возможности с Connection. ИМХО, это мета вопрос.
Грубо говоря, сеансы - это, по сути, представление потока в соединении. Вот что спецификация JMS должна сказать об отношении между потоком и сеансом при доступе к последующему.
Нет ограничений на количество потоков, которые могут использовать сеанс или любые объекты, которые он создает. Ограничение состоит в том, что ресурсы сеанса не должны использоваться одновременно несколькими потоками. Пользователь должен убедиться, что это ограничение параллелизма выполнено. Самый простой способ сделать это - использовать один поток. В случае асинхронной доставки используйте один поток для установки в режиме остановки, а затем запустите асинхронную доставку. В более сложных случаях пользователь должен обеспечить явную синхронизацию.
С точки зрения обмена сообщениями, они содержат логическую единицу работы. Вот почему транзакции также были связаны с сессиями.
Сказав это, довольно часто между соединением и сеансом будет отображаться соотношение 1: 1. Вот почему я думаю, что JMSContext был представлен в 2.0. чтобы упростить вещи.
Глядя на дату поста ОП, я думаю, что опоздал почти на десять лет. : D