2013-03-28 3 views
0

Я работаю над автономным многопоточным приложением, где я использую простой JMS API для отправки и получения сообщений синхронно с использованием механизма P2P. При запуске нескольких потоков исключение генерируется при получении данных с использованием объекта-потребителя (один потребительский объект на поток), говорящий о закрытии исключения IllegalStateException: Session. Я попытался сделать это двумя способами.Как использовать Java JMS-сеанс в многопоточном приложении?

1) Создал соединения и объекты сеанса в одноэлементном классе и использовал эти объекты при отправке и приеме сообщений. Синхронизируйте фрагмент кода, который отправляет и принимает сообщения.

2) Создал класс SessionPool (singleton), где он создает 5 сеансов. Поскольку мое приложение ограничено количеством пулов потоков 20, и каждый поток извлекает сеанс из сеанса и возвращает сессию после получения сообщения. Это отлично работало для 5 потоков, а позже выбрано исключение, говорящее, что сеанс закрыт.

Пожалуйста, помогите мне в том, как эффективно использовать объекты сеанса без создания одного сеанса в одном потоке.

+0

показать нам код :) – WeMakeSoftware

ответ

0

Возможно, вам захочется пересмотреть свою архитектуру.

JMS - это способ связи между поставщиком JMS и потребителем JMS [s]. Это скорее архитектура клиент-сервер. Я бы не рекомендовал использовать это для p2p.