Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Дейтел Х.М. -> "Технологии профаммирования на Java 2 Книга 2" -> 34

Технологии профаммирования на Java 2 Книга 2 - Дейтел Х.М.

Дейтел Х.М. , Дейтел П.Дж., Сантри С.И. Технологии профаммирования на Java 2 Книга 2 — М.: Бином-Пресс, 2003. — 468 c.
ISBN 5-9518-0051-Х
Скачать (прямая ссылка): tehprogrammjava220032.pdf
Предыдущая << 1 .. 28 29 30 31 32 33 < 34 > 35 36 37 38 39 40 .. 204 >> Следующая

1 // DeitelMessenger.java
2 // DeitelMessenger использует классы ClientGOI и RMIMessageManager 3// для реализации клиента интерактивного общения на базе RMI.
4 package сою.deitel.messenger.rmi.client; 5
6 Il Набор базовых пакетов Java
7 import j ava.rmi.RMI Securі tyManager; 8
9 Il Пакеты Deitel 10 import com.deitel.messenger.*; 11
12 public class DeitelMessenger { 13
14 // запуск приложения DeitelMessenger
74
Глава 2
15 public static void main ( String args[] ) throws Exception
16 {
17 Il запуск менеджера RMISecurityManager
18 System.setSecurityManager( new RMISecurityManager() ); 19
20 MessageManager messageManager; 21
22 Il создание нового объекта DeitelMessenger
23 if ( args.length = 0 )
24 messageManager = new RMIMessageManager( "localhost" );
25 else
26 messageManager = new RMIMessageManager( args[ 0 ] );
27
28 Il окончание конфигурирования окна и отображение его
29 ClientGUI ClientGUI = new ClientGUI( messageManager );
30 ClientGUI.pack ();
31 ClientGUI.setResizable( false );
32 ClientGUI.setVisible( true );
33 )
34 )
Рис. 2.24. Класс DeitelMessenger запускает клиент чата с помощью классов ClientGUI и RMIMessageManager
2.6.3. Выполнение серверного и клиентского приложений Deitel Messenger
Для выполнения серверного и клиентского приложений Deitel Messenger требуется несколько шагов. В дополнение к реестру RMI для приложения RMI, которое использует активируемые объекты, требуется демон активации RMI (rmid). Демон активации RMI представляет собой серверный процесс, который управляет регистрацией, активацией и дезактивацией удаленных объектов Activatable.
Чтобы начать, запустите реестр RMI, выполнив команду
rmiregistry
из командной строки. Проверьте, чтобы файл заглушки для удаленного объекта ChatServer (ChatServerImpl_Stnb.class) не находился в каталоге реестра RMI, задаваемого в CLASSPATH, так как это не позволит осуществить динамическую загрузку класса. Далее запустите демон активации RMI, выполнив команду
rmid -J -Djava.security.policy=rmid.policy
где rmid.policy — полный путь к файлу политики, представленному на рис. 2.25. Этот файл политики дает возможность группе активации Activation Group, в которой выполняется сервер ChatServer, задавать файл C:\activationGroup.policy в качестве файла политики для виртуальной машины для ActivationGroup. Если вы помещаете файл activationGroup.policy в каталог, отличный от С:\, не забудьте модифицировать файл rmid.policy для задания соответствующего местоположения.
X Il разрешение ActivationGroup задавать файл C:\activationGroup.policy
2 // в качестве политики безопасности для виртуальной машины
3 grant {
4 permission com.sun.rmi.rmid.ExecOptionPermission
5 "-Dj ava. security.policy=file:///C:/activationGroup.policy";
6 );_•_ _
Рис. 2.25. Файл политики для демона активации RMI
Удаленный вызов методов
75
Динамическая загрузка классов дает возможность программам на Java загружать по сети классы, которые отсутствуют в локальном пути, задаваемом переменной CLASSPATH. Это особенно полезно для RMI-приложений, позволяющих клиентам динамически загружать файлы заглушек. Когда объект RMI задает системное свойство java.rmi.server.codebase, реестр RMI добавляет аннотацию к удаленным ссылкам этого объекта. Эта аннотация задает базу кодов, из которой клиенты могут загружать любые необходимые классы. Эти классы могут включать заглушку для удаленного объекта и другие классы. Эти файлы .class должны быть доступны для загрузки с сервера HTTP. Sun предоставляет сервер HTTP, который может быть использован для целей тестирования. Он может быть загружен по адресу
java. sun. com/products/jdlc/rmi/class-server. zip
Извлеките файлы из архива class-server.zip и прочтите имеющиеся инструкции по запуску сервера HTTP. В таблице на рис. 2.26 приведены файлы, которые должны быть включены в каталог загрузки сервера HTTP. Например, если каталогом загрузки сервера HTTP является C:\classes, скопируйте структуру каталогов и файлы .class, приведенные на рис. 2.26, в C:\classes. Прежде чем продолжить, запустите сервер HTTP.
Каталог
Имя файла

com\deitel\messenger\rmi\server\
ChatServer. class
ChatServerlmpl. class

CnatServerxmplSi. class
ChatServerImpl_Stub. class
StoppableChatServer. class
com\deitel\messenger\rmi\client\
ChatClient. class
RMIMessageManager Stub. class
... V • \
coin \ dex telxmess enger \ rmi \

ChatMessage. class
Рис. 2.26. Список файлов, помещаемых в каталог загрузки сервера HTTP
Далее, выполните приложение ChatServerAdministrator для запуска активируемого удаленного объекта, воспользовавшись командой
java -Djava.security.policy=administrator.policy
-Djava.rmi. server.codebase=http://имя_компыотера: порт com.deitel.messenger.rmi. server.ChatServerAdministrator start
где administrator.policy — это полный путь к файлу политики, представленному на рис. 2.27, имякомпьютвра — имя компьютера или его D?-адрес, на котором выполняется сервер HTTP, а порт — номер порта, который использует сервер HTTP. Реестр RMI будет аннотировать каждую удаленную ссылку, которую он возвращает с этой базой кодов. Файл политики должен разрешить объекту ChatServerAdministrator соединяться с портом 1098 на локальной машине, который является портом, используемым демоном активации RMI. Файл политики также должен разрешать приложению ClmtSei^erAdministrator доступ к порту, на котором выполняется Web-сервер. Строки 4-5 листинга на рис. 2.27 задают, что приложение ChatServerAdministrator
Предыдущая << 1 .. 28 29 30 31 32 33 < 34 > 35 36 37 38 39 40 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100