- •Распределенные события:
- •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 контейнер
Архитектура совместного использования web и ejb компонентов, Ejb-транзакции.
Транзакция
Как уже говорилось, в EJB используется спецификация управления транзакциями CORBA, реализованная на языке Java (JTS). Обычно разработчик не обращается к методам интерфейсов JTS, поскольку компонентная модель обеспечивает вспомогательный программный слой - Java Transaction API (JTA). Это и есть рабочий инструмент программиста при управлении транзакциями.
Поскольку спецификация CORBA OTS четко определяет участников распределенной транзакции и их роли, JTA также поступает подобным образом. Участниками транзакции с точки зрения JTA являются:
ресурс, под которым понимается соединение с базой данных;
менеджер ресурсов – драйвер JDBC;
сервер приложений – Сервер EJB;
менеджер транзакций и
транзакционное приложение, т.е. компонент или клиент.
Для каждой из этих ролей в JTA определены соответствующие интерфейсы.
В общем случае, управлять транзакциями (начинать транзакцию, завершать ее или откатывать) может как компонент, так и контейнер. Соответственно, в спецификации определены эти два вида транзакций.
Транзакция, управляемая компонетом (Bean Managed Transaction, BMT)
Управление транзакцией берет на себя компонент. Только Session-компоненты могут использовать такой режим. Только в этом режиме вызов одного из удаленных методов может привести к началу транзакции, но не обязательно к ее завершению – несколько последующих вызовов могут происходить в контекст этой же транзакции.
Транзакция, управляемая Контейнером (Container Managed Transaction, CMT)
Режим разрешен как для Session-, так и для Entity-компонентов. Компонент не имеет возможности ни начать, ни завершить транзакцию (хотя любой из участников транзакции может потребовать ее отката (rollback) при завершении) – управление транзакцией полностью берет на себя Контейнер. Транзакция начинается при вызове каждого удаленного метода и завершается при возврате из него. Программист может установить один из нескольких разрешенных режимов, определяющих поведение транзакции.
Доступ к компонентам ejb из различных приложений клиента (web, Console, gui).
Когда у клиента EJB возникает потребность воспользоваться услугами EJB, он с помощью home-интерфейса создаёт EJB. Клиент использует один из методов create(), которые определяет home-интерфейс. Реализация home-интерфейса осуществляется с помощью объекта, называющегося home-объектом. Экземпляр такого home-объекта создаётся на сервере и в качестве factory (построителя) предоставляется клиенту для создания бина.
Поиск Home-объекта
Клиент EJB определяет местонахождение home-объекта с помощью JNDI, так как ссылка на этот home-объект помещается в службе имён (naming service при развертывании соответствующих контейнеров с компонентами). Соответствующее местоположение и имя factory-класса для контекста JNDI предоставляется клиенту изначально. Кроме знания места и имени класса, клиент должен иметь представление о том, как найти этот home-объект в структуре дерева имён (naming tree).
Пример разработки клиентского приложения
Первое, что должно выполнить клиентское приложение - это получить доступ к home-интерфейсу для Компонента SortBean. Делается это с помощью вызова методов JNDI API. Как показано в Примере SortClient создает контекст имен JNDI, а затем использует его метод lookup для поиска home-интерфейса для "sort":
Пример: Фрагмент кода SortClient
// SortClient Java
public class SortClient {
public static void main(String[] args) throws Exception
// Получение контекста JNDI с помощью JNDI службы Указания Имен:
{ javax.naming.Context context; //переменная контекста
{ // get a JNDI context using the Naming service
context = new javax.naming.InitialContext(); } //получить контекст JNDI
// Поиск Домашнего интерфейса в службе JNDI Naming:
Object objref = (SortHome) context.lookup("sort");
// Приведение удаленного объекта к домашнему итерфейсу:
SortHome home = (SortHome) javax.rmi.PortableRemoteObject.narrow(objref, SortHome.class);
// Создание удаленного объекта из домашнего интерфейса:
Sort sort = home.create(); ... //do the sort and merge work sort.remove();
// Далее вызов методов sort () и/или merge ()
После получения ссылки на интерфейс SortHome, клиент может вызвать его метод create () для получения ссылки на remote-интерфейс Sort. Получив эту ссылку, клиент может вызывать его методы sort () и merge () так же, как он мог бы обращаться к любым другим методам. На самом деле remote-интерфейс перенаправляет вызовы клиента собственно Компоненту EJB.
Вызов из web принципиально ничем не отличается