
- •JAVA-ТЕХНОЛОГИЯ
- •Java Enterprise Edition
- •Архитектура JEE
- •Архитектура JEE
- •JEE-клиенты
- •Клиентские приложения
- •Коммуникации сервера J2EE
- •Web-компоненты
- •Web-компоненты
- •Бизнес-компоненты
- •Корпоративные компоненты (Enterprise JavaBeans)
- •JEE-контейнеры
- •Типы контейнеров
- •Типы контейнеров
- •Доступ к базам данных
- •Базовые службы
- •Базовые службы
- •Базовые службы
- •Базовые службы
- •Базовые службы
- •Базовые службы
- •Servlet
- •Технология JavaServer
- •RMI - интерфейсы
- •Пример определения удалённого класса
- •Комментарии к примеру
- •Создание клиента
- •Комментарии к примеру
- •JNDI
- •Client – EJB Container
- •Роли инженеров в EJB-разработке

Базовые службы
Java Authentication and Authorization Service (JAAS) предоставляет возможность приложению JEE аутентифицировать и авторизовать пользователей и группы пользователей
(C)В.О. Сафонов.
2013

EJB
Enterprise JavaBean – компонента
(корпоративная компонента) ~ класс, поля и методы которого реализуют бизнес-логику. Ее можно представить в виде строительного блока, который может использоваться как самостоятельно, так и совместно с другими компонентами для исполнения бизнес-логики на JEE- сервере
(C) В.О. Сафонов. 2013

Servlet
Технология Java Servlet позволяет определить классы сервлетов. Класс сервлета расширяет возможности серверов, доступные приложениям при использовании ими модели программирования "запрос - ответ".
(C)В.О. Сафонов.
2013

Технология JavaServer
Pages
Технология JavaServer Pages позволяет встраивать фрагменты кода сервлета прямо в текстовые документы. JSP-страница представляет собой текстовый документ, который содержит два типа текста: статичные шаблонные данные, которые могут быть представлены в любом текстовом формате, таком как HTML, WML и XML, а также JSP-элементы, которые определяют способ построения динамичного содержимого страницы
(C)В.О. Сафонов.
2013

RMI
Remote Method Invocation: javax.rmi.*
Клиент |
|
Сервер |
|
|
RMI registry |
|
|
Service 1 |
|
Network |
Service 2 |
|
|
|
RMI |
protocol |
|
|
stubs |
|
proxy |
|
skeletons |
(C) В.О. Сафонов. |
|
|
2013 |
|
|

RMI - интерфейсы
•Удалённый интерфейс должен расширять java.rmi.remote
•Каждый метод должен бросать java.rmi.RemoteException
•Объектные параметры и возвращаемые значения должны быть объявлены расширяющими Remote интерфейс.
•Класс должен расширять UnicastRemoteObject и реализовывать расширенный Remote интерфейс
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface PerfectTimeI extends Remote {
public long getPerfectTime() throws RemoteException;
}
(C) В.О. Сафонов. 2013

Пример определения удалённого класса
import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; import java.net.*;
public class PerfectTime extends UnicastRemoteObject implements PerfectTimeI {
public long getPerfectTime() throws RemoteException { return System.currentTimeMillis(); }
public PerfectTime() throws RemoteException {}
public static void main(String[] args) throws Exception { System.setSecurityManager( newRMISecurityManager()); PerfectTime pt = new PerfectTime(); Naming.bind("//peppy:2005/PerfectTime", pt); System.out.println("Ready to do time");
}
} |
(C) В.О. Сафонов. 2013 |
|

Комментарии к примеру
•Необходимо реализовать конструктор для бросания исключения
•Для работы Naming необходим запущенный сервер rmiRegistry
wnd: start rmiregistry 2005
Unix: rmiregistry 2005 &
•Bind: нельзя писать localhost,
необходимо иметь активные соединения
TCPIP
•Порт по умолчанию 1099 – можно не писать.
•Имя сервиса может быть произвольным
•Registry можно создать самому
LocateRegistry.createRegistry(2005) необходимо
быть уверенным в единоличном пользовании им.
•
(C) В.О. Сафонов. 2013

Создание клиента
package c15.rmi; import java.rmi.*;
import java.rmi.registry.*;
public class DisplayPerfectTime {
public static void main(String[] args) throws Exception { System.setSecurityManager(new
RMISecurityManager());
PerfectTimeI t = (PerfectTimeI)Naming.lookup(
"//peppy:2005/PerfectTime"); for (int i = 0; i < 10; i++) {
System.out.println
("Perfect time = " + t.getPerfectTime());
}
}
}
(C) В.О. Сафонов. 2013

Комментарии к примеру
•Приведение полученного объекта именно к интерфейсу, расширяющему Remote, является обязательным
•Далее используется полученный удалённый объект
(C) В.О. Сафонов. 2013