- •Распределенные события:
- •4. Проектирование сложных объектов. Основные принципы проектирования. Аспекты и стадии проектирования
- •5. Развитие парадигмы программирования
- •6. Функциональное моделирование. Стандарты idef0, idef3.
- •7. Информационное моделирование. Стандарты idef1, idef1x/
- •8. Средства и элементы статистических и динамических моделей объектно-ориентированных систем (статические и динамические диаграммы uml).
- •9.Порождающие паттерны. Назначение, обобщенные свойства, применение. Пример реализации.
- •10. Структурные паттерны. Назначение, обобщенные свойства, применение. Пример реализации.
- •11.Паттерны поведения. Назначение, обобщенные свойства, применение. Пример реализации
- •12. Язык xml: средства, назначения и особенности использования. Xml и dtd.
- •13. Язык xml и схемы данных.
- •14.Методы и средства обработки xml документов с использ-ем моделей dom и sax, преимущ-ва и недостатки.
- •15.Языки Extensible Markup Language(xsl) и xsl Transformations (xslt): назначение и особенности использования.
- •16. Язык xPath и его применение для доступа к элементам xml.
- •17.Фазы, итерации и циклы разработки. Рабочие процессы, модели и артефакты.
- •18. Совместная разработка: Методы и средства тестирования и отладки программных приложений
- •19. Особенности модель распределённых объектов. Модель rpc.
- •20. Классы и интерфейсы механизма rmi . Архитектура и конфигурирование rmi
- •Разработка rmi приложений. Примеры. Соглашения о передаче данных
- •Corba, назначение, терминология. Архитектура управления объектами (ома). Объектная модель corba.
- •Основные сервисы Corba, модель организация приложений corba, примеры.
- •Orb: понятие, назначение, основные функции. Принципы организации запросов в orb. Использование стандарта iiop.
- •Объектный адаптеры boa и роа. Назначение и основные функции. Статические и динамические вызовы в corba.
- •Язык idl, основные характеристики языка, создание распределенных объектов на idl Связь rmi и corba.
- •Понятие прозрачность, серванта, использование посредников proxies в corba. Name сервис.
- •Платформа j2ee. (основные технологии). Когда следует применять Enterprise JavaBeans. Типы ejb, обобщенная архитектура, принципы функционирования и программное обеспечение.
- •Понятие, определение и использование удаленного (Remote) и локального интерфейсов. Их применение и программная реализация (примеры).
- •Понятие, определение и использование собственного (home) интерфейса. Их программная реализация (примеры)
- •Сеансовые (Session) компоненты ejb без состояния и с состоянием, их особенности и применение.
- •Общие принципы развертывание сеансовых компонентов ejb. Пример текста дескриптора поставки.
- •Организация и особенности Entity компонент с сохранением (персистентностью) управляемым контейнером (cmp).
- •Организация и особенности Entity компонент с сохранением (персистентностью) управляемым компонентом (bmp).
- •Особенности реализации (home) и (Remote) интерфейсов для Entity компонентов.
- •Контейнер ejb, понятие, назначение, основные функции.
- •Дескриптор поставки, структура и общие принципы организации кода. Пример описания на xml.
- •Jndi, структура, назначение, роль в развертывании и функционировании.
- •Архитектура совместного использования web и ejb компонентов, Ejb-транзакции.
- •Доступ к компонентам ejb из различных приложений клиента (web, Console, gui).
- •Компоненты ejb, управляемые сообщениями. Обмен сообщениями с помощью java Message Service (jms) .
- •Модели использования jms. Основные объекты и термины, их назначение (алгоритм реализации).
- •Message Driven Beans (mdb), жизненный цикл компонентов. Особенности применения и функционирования, реализующие методы (примеры).
- •Технология jsf Базовые концепции технологии и функциональные возможности jsf
- •Inversion of Control контейнер
Модели использования jms. Основные объекты и термины, их назначение (алгоритм реализации).
Java Message Service (JMS) – это Java API (то есть набор интерфейсов и классов) для работы с Message-Oriented Middleware (МОМ). Данный набор определен в пакете javax.jms в дереве пакетов J2EE.
В Messaging System приложения общаются не напрямую, а посредством MOM (промежуточного программного обеспечения). Если один компонент системы хочет послать сообщение другому компоненту, он посылает данное сообщение MOM, а уж MOM затем пересылает его адресату.
MOM реализует асинхронность обмена сообщениями.
Существует две "основных" модели обмена сообщениями:
point-to-point
publish-subscribe (pub-sub)
Point-to-point модель применяется, когда одному или нескольким компонентам (так называемые senders) необходимо послать сообщение одному компоненту-адресату (receiver).
Publish-subscribe (Pub-sub) модель применима, когда одному или нескольким компонентам (publishers) необходимо послать сообщение одному или нескольким компонентам-адресатам (subscribers). Данная модель основана на понятии message topic.
ConnectionFactory – это обьект, ответственный за создание JMS Connection. Администратор МОМ создает данный обьект и связывает его с деревом JNDI, так что клиент JMS может получить доступ к ConnectionFactory используя стандартный JNDI lookup-механизм.
Connection – абстрактное представление реального соединения между клиентом JMS и MOM.
Session – обьект, создаваемый JMS Connection и используемый клиентами для посылки и принятия сообщений.
Destination – это либо queue, либо topic – в зависимости от используемой модели. Как и ConnectionFactory, destination связывается с деревом JNDI.
MessageProducer – обьект, который, собственно, и посылает сообщения.
MessageConsumer – обьект, принимающий сообщения. Message– сообщение. О типах сообщений будет сказано ниже.
Алгоритм реализации:
Используем JMS и JNDI пакеты, инициализируем контекст сервиса JNDI;
достаем ссылку на ConnectionFactory, опираясь на заданное нами имя; при создании (развертывании ресурса);
создадим Connection (абстакция реального соединения);
Создадим Session;
Находим Destination, либо создаем ее;
Создадим простейшее текстовое сообщение ;
Создадим MessageProducer
Активизация связи Connection
Посылаем сообщение
Существует два пути получения сообщений:
Первый – синхронное затребование сообщений из queue, используя метод receive() интерфейса javax.jms.QueueReceiver.
Второй – асинхронное получение сообщений как только они становятся доступны – используя интерфейс javax.jms.MessageListener.
Особенности использования модели Point - to – Point (алгоритм и шаги реализации).
Point-to-point модель применяется, когда одному или нескольким компонентам (так называемые senders) необходимо послать сообщение одному компоненту-адресату (receiver).
Модель основана на понятии message queue (очередь). Senders посылают сообщения в queue, а Receiver читает сообщения из queue.
Часто говорят, что в point-to-point модели есть один и только один receiver. Однако это не совсем верно. Может существовать несколько receivers, присоединенных к одной и той же очереди. Но MOM доставит сообщение только одному из них. Какому именно – зависит от реализации. Некоторые MOM доставляют сообщение первому зарегистрированному receiver, в то время как существуют реализации, осуществляющие round-robin (карусельный метод использования адресов пула по кругу. При этом, используется определение адресов через таблицы.)
Модель «точка-точка» более удобна, если требуется, чтобы отдельный получатель обработал данное сообщение только один раз. Возможно, это наиболее существенное различие между двумя моделями:p2p гарантирует, что только один потребитель обработает каждое сообщение. Это чрезвычайно важно, когда сообщения должны быть обработаны отдельно и последовательно друг за другом.
Алгоритм реализации:
Сначала найдем сервис JNDI, инициализируем контекст
Теперь найдем ConnectionFactory с помощью JNDI
А теперь создадим Connection (абстакция реального соединения) 4. Создадим Session со следующими свойствами
Найдем Destination с помощью JNDI queue.
5.1. проверяем есть ли Queue в JNDI
5.2. Если еще не существует (не зарегистрирована в JNDI) – создадим и зарегистрируемекта Destination
Создадим простейшее текстовое сообщение textMessag
Создадим MessageProducer (объект посылающий сообщение в рoint-to-рoint имеет тип QueueSender) 9. Пошлем сообщение.
Существует два пути получения сообщений:
Первый – синхронное затребование сообщений из queue, используя метод receive() интерфейса javax.jms.QueueReceiver.
Второй – асинхронное получение сообщений как только они становятся доступны – используя интерфейс javax.jms.MessageListener.
Особенности использования модели PUB-SUB (алгоритм и шаги реализации).
Publish-subscribe (Pub-sub) модель применима, когда одному или неск-м компонентам (publishers) необх. послать сообщение одному или неск-м компонентам-адресатам (subscribers). Данная модель основана на понятии message topic(топики). Сам объект Topic предст. незав. от сетевой реализации пункт назначения, в к-й будет отпр-но сообщение. Publishers посылают сообщения в topic, и все subscribers данного topic получают эти сообщения.
Тема предст. соб. аналог списка рассылки: любое прил-е, облад-е дост-ми правами, может принимать сообщения из темы и посылать сообщения в тему. Когда клиент JMS принимает сообщения из темы, говорят, что клиент подписан (subscribed) на данную тему. JMS разделяет прикладные программы, позволяя им посылать сообщения друг другу через пункт назначения, который работает в качестве вирт-го канала.
Какую именно модель исп-ть – это зависит от хар-ра системы и, какой MOM-продукт исп-тся. Не все реализации поддерживают обе модели. Pub-sub модель кажется более элегантной, но следует помнить, что многие pub-sub системы не гарант-т доставку сообщений в том порядке, в каком они были посланы (в отличие от point-to-point, где queue реализует принцип first-in/first-out). Поэтому в случае pub-sub модели следует по возможности избегать ситуаций, когда порядок следования сообщений важен (либо использовать заголовки и раздел свойств сообщений для синхронизации). В JMS сообщения посылаются в пункт назначения (тему или очередь), а не другим прикладным программам непосредственно.
Алгоритм реализации:
Сначала найдем сервис JNDI, инициализируем
Найдем ConnectionFactory
Создадим TopicConnection соединении
Создадим TopicSession
Найдем topic в дереве JNDI (или создадим новый, если он не существует)
Создадим простейшее текстовое сообщение textMessage
Создадим MessageProducer, (в данном случае TopicPublisher)
Посылаем сообщение.
В Pub-Sub subscriber существует два способа получения сообщения:
синхронный, с использованием метода receive() интерфейса TopicSubscriber
асинхронный, с использованием интерфейса MessageListener.
В синхронном варианте, получив (либо создав) Topic, создадим consumer (объект принимающий сообщения): TopicSubscriber subscriber = session.createSubscriber(topic);
После активизации connection, вы можете получать сообщения: TextMessage textMessage = (TextMessage)subscriber.receive();
В случае асинхронного получения сообщений реализуйте метод onMessage интерфейса MessageListener, и зарегистрируйте новый Listener с помощью метода setMessageListener интерфейса TopicSubscriber.