- •Распределенные события:
- •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 контейнер
Разработка rmi приложений. Примеры. Соглашения о передаче данных
1. Удаленный интерфейс должен быть public . В противном случае клиенты будут получать ошибку при попытке загрузки объекта, реализующего удаленный интерфейс. Удаленный интерфейс должен расширять интерфейс java.rmi.Remote. Каждый метод удаленного интерфейса должен объявлять java.rmi.RemoteException в своем предложении throws в добавок к любым исключениям, специфичным для приложения. AddServerIntf.java (определение интерфейса):
public interface AddServerIntf extends Remote { //расширяет интерфейс Remote, объявление абстрактного
//метода интерфейса. Здесь метод, принимающий два double-параметра, тело - в реализующем классе
double add (double d1, double d2) throws RemoteException; //все удаленные методы могут выбрасывать исключение RemoteException }
2. Серверный модуль реализующий задачу клиента. Данный класс расширяет (наследует) класс UnicastRemoteObject и реализует интерфейс AddServerIntf. (Все удаленные классы должны расширять класс UnicastRemoteObject). AddServerImpl.java:
public class AddServerImpl extends UnicastRemoteObject implements // UnicastRemoteObject – поддерживаются однонаправленые серверы
AddServerIntf
{//расширение класса UnicastRemoteObject и реализация интерфейса AddServerIntf
public AddServerImpl() throws RemoteException{
//конструктор класса AddServerImpl()все удаленные методы могут выбрасывать исключение RemoteException}
public double add(double d1, double d2) throws RemoteException//реализация удаленного метода (метод сервера вычисляет сумму параметров
{return d1+d2;}}
3. консольная (main) программа сервера, которая должна обновить RMI-реестр на машине-сервере (при помощи метода rebind() класса Naming, пакета java.rmi.*. Он связывает имя сервера с объектной ссылкой. AddServer.java:
public class AddServer{
public static void main(String args[])//консольная программа сервера
{
try {
AddServerImpl addServerImpl=new AddServerImpl();//Создается объект класса AddServerImpl
Naming.rebind("AddServer", addServerImpl);//задается имя сервера, которое связывается с объектной ссылкой
}
catch (Exception e) {
System.out.println("Exception: "+e);}}}
4. Клиент. IP- адрес (1-й параметр или имя сервера) и аргументы для инициализации входных параметров метода, выполняющегося на сервере (второй и третий параметр, задаваемый через пробел), передаются в командной строке.
public class AddClient {
public static void main(String args[]) {
try {
String addServerURL ="rmi://" + args[0] + "/AddServer";//формирование строки в синтаксисе формирования URL, в соответствии с протоколом rmi, т.е. IP-адрес сервера и строку //AddServer –имя сервера
AddServerIntf addServerIntf = (AddServerIntf)Naming.lookup(addServerURL);// Метод Naming.lookup (addServerURL) принимает rmi URL, и возвращает ссылку на объект типа AddServerIntf, которому можно направлять удаленные вызовы
System.out.println("The firt number is: " + args[1]);
double d1 = Double.valueOf(args[1]).doubleValue();//формирование первого значения
System.out.println("The second number is: " + args[2]);
double d2 = Double.valueOf(args[2]).doubleValue();//формирование второго значения
System.out.println("The sum is: " + addServerIntf.add(d1,d2));// удаленный вызов метода add, возвращающего сумму чисел
} catch (Exception e) {
System.out.println("Exceptio is: " + e );} }}