Weblogic. JMS. Отправка и прием сообщения на topic из клиента.

При работе с JMS хочется проверить работу своего кода, а для этого нам может пригодится простой консольный клиент, который будет соединяться с сервером приложений, в данном случае с Weblogic, класть сообщение в топик и тут же вычитывать его. Так мы сможем протестировать работу publisher/subscriber в одном месте. Для этого создадим класс, пошагово объясняя каждую строчку.
Сперва разберем весь код в деталях, а в конце приведем пример полного класса.
Перед работой, желательно сразу подключить библиотеки weblogic.jar, wlclient.jar и wljmsclient.jar. Найти их можно в папка вебложика.
Сперва нам необходимо задать системные свойства для контекста инициализации, которые должны содержать адрес провайдера и фабрику контекста инициализации:
Для Weblogic данные будут следующие:
t3://your_server_name:7290 - адрес сервера и порт, на котором крутится Ваш сервер.
"weblogic.jndi.WLInitialContextFactory" - константное значение в случае использования weblogic, но разная для всех серверов приложений j2ee.
1. Создаем контекст инициализации, который будет находить для нас объекты по JNDI.
2. Получаем через контекст фабрику соединений для топика. Она уже должна быть создана у Вас на сервере.
3. Создаем соединение для топика:
4. Создаем сразу две сессии - через одну будем отсылать сообщения, через другую - принимать.
5. Находим наш топик, в который будем отсылать по имени JNDI через контекст инициализации:
6. Дальше - все просто. Создаем паблишера, сообщение, задаем текст сообщения и публикуемся:
Если все пошло хорошо - мессага улетела на топик.
Прием сообщений.
1. Подписываемся на топик:
2. Начинаем:
3. В цикле принимаем сообщений. Реализация убогая, но для теста пойдет:
4. Задаем нашему классу, что он имплементит MessageListener интерфейс и задаем метод onMessage(), который слушает топик:
Ну и в конце пример полноценного класса, готового к запуску:
Материалы, которые могут вас заинтересовать
- Нуждается ли приложение в сервере приложений? / Deciding Whether an Application Needs an Application Server
- В чем разница между application server и web server?
- Вопросы на собеседование по JMS
- Websphere + Jython. Сборник готовый функций для всевозможных операций по созданию j2ee ресурсов
- Как происходит вызов EJB?
- В чем разница между EJB 2.0 и EJB 3.0?
- Можно ли вызывать Runtime.gc() в EJB?
- Что такое deployment descriptor или дескриптор развертывания?
- Являются ли JavaBeans компонентами J2EE?







Отправить комментарий