
- •ЛабораторнаЯ рАбота 4
- •ЛабораторнаЯ рАбота 5 Создание корпоративной информационной системы на основе Java jms
- •1 Теоретическое введение
- •1.1 Архитектура jms-базированной кис
- •1.2 Сообщения
- •1.3 Модели передачи сообщений
- •1.4 Схема применения jms
- •Пример №1. Создания jms-базированной кис,
- •Часть 1.
- •Часть 2.
- •Часть 3.
- •Часть 4 (факультативно).
ЛабораторнаЯ рАбота 4

ЛабораторнаЯ рАбота 5 Создание корпоративной информационной системы на основе Java jms
Цель работы - получение практических навыков создания корпоративной информационной системы (КИС) на основе Java JMS, а именно:
изучение вариантов взаимодействия удаленных объектов Java с использованием JMS;
изучение компонентов JMS, необходимых для функционирования распределенных приложений Java;
разработка распределенного Java-приложения с использованием JMS для функционирования в сетевом режиме;
анализ достоинств и недостатков JMS по сравнению с другими технологиями распределенного взаимодействия приложений.
1 Теоретическое введение
1.1 Архитектура jms-базированной кис
Java Messaging System (JMS) представляет собой универсальный интерфейс обобщенного Java API для корпоративных приложений (КИС), ориентированных на работу с помощью сообщений (message-oriented application programming) с целью обеспечения их независимости от конкретных реализаций служб обработки сообщений. В настоящее время спецификация JMS - это промышленный стандарт для обработки сообщений в масштабе предприятия.
Корпоративная информационная система типа MOM (Мessage Oriented Middleware) (рисунок 1), обеспечивает так называемое «слабое связывание» приложений-поставщиков (Producers) с приложениями-потребителями (Consumers) посредством передачи сообщений (Messages) c помощью фабрик соединений (Connection Factories – CF).
Рисунок 1 – КИС типа МОМ
Архитектура JMS-базированной КИС выглядит следующим образом (рисунок 2):
Рисунок 1
JMS-клиент (JMS client) - прикладная программа Java, использующая JMS для отправки и приёма сообщений;
JMS-поставщик (message producer) - JMS-клиент, посылающий сообщение;
JMS-потребитель (message consumer) - JMS-клиент, принимающий сообщение1;
не JMS-клиент - программа, не имеющая отношения к JMS, однако являющиеся неотъемлемой частью JMS-проекта КИС;
JMS-провайдер (JMS provider) - система обработки сообщений, управляющая маршрутизацией и доставкой сообщений;
JMS-приложение (JMS application) - прикладная программная система, состоящая из нескольких JMS-клиентов, и, как правило, одного JMS-провайдера;
JMS-сообщение (JMS message) - объект, передаваемый и принимаемый JMS-клиентами;
управляемые объекты JMS (administered objects) - буферы для хранения JMS-сообщений;
средства администрирования JMS (administrative tools) - средства управления ресурсами, которые использующимися JMS клиентами.
JMS-сессия (JMS Session) - однопоточный контекст для отсылки и получения JMS-сообщений. JMS сессия может быть нетранзакционной, с поддержкой локальных транзакций, или участвовать в распределенных транзакциях;
Расположение (destination) – объект, который используется клиентом либо для определения адреса доставки сообщения, либо для получения сообщений, доставленных по определенному адресу.
Соединение (Connection) - соединение с JMS-провайдером;
Фабрика соединения (Connection Factory - CF) - администрируемый объект, используемый для создания соединения.
Java Naming and Directory Interface (JNDI) - Java API, организованный в виде службы каталогов и позволяющий Java-клиентам открывать и просматривать данные и объекты по их именам (рисунок 2).
Рисунок 2
JMS определяет инфраструктуру компонентов, позволяющую разработчикам создавать автоматизированные, интеллектуальные решения, - для сетевого управления в быстро меняющихся ситуациях. JMS определяет трехуровневую архитектуру: уровень сетевых ресурсов, уровень агентов и уровень управления (рисунок 3).
Рисунок 3
Уровень сетевых устройств делает объект управляемым. Уровень агентов предоставляет управляющие сервисы, делающие ресурсы доступными для управления. Наконец, уровень управления дает возможность управляющему приложению осуществлять доступ к управляемым ресурсам и взаимодействовать с ними через JMS-агентов. Кроме того, JMS обеспечивает поддержку существующих протоколов сетевого управления, например, SNMP, так что JMS позволяет осуществлять интеграцию КИС с существующими системами сетевого управления.
Модель обмена сообщениями JMS удобно использовать в том случае, если распределенное приложение КИС обладает следующими характеристиками:
взаимодействие между компонентами КИС является асинхронным;
информация (сообщение) должна передаваться нескольким или даже всем компонентам КИС (семантика передачи «от одного ко многим»);
передаваемая информация используется внешними системами, часть из которых неизвестна на момент проектирования КИС или интерфейсы которых подвержены частым изменениям2;
обменивающиеся информацией (сообщениями) компоненты КИС выполняются в разное время, что требует наличия посредника для промежуточного хранения переданной информации.
Стандартные интерфейсы JMS доступны в пакете javax.jms, который входит в комплект jdk. Реализация JMS от корпорации Oracle находится в пакете oracle.jms. Поскольку JMS является лишь интерфейсной оболочкой, описывающей доступные для приложения методы, то для разработки и тестирования КИС нужна конкретная реализация интерфейсов JMS, называемая JMS-провайдером. Провайдеры JMS создаются независимыми производителями, и в настоящее время существует несколько таких реализаций (далее рассматривается реализация, включенная в состав Java2 Enterprise Edition и Oracle GlassFish Server).