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

 

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

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

Дейтел Х.М. , Дейтел П.Дж., Сантри С.И. Технологии профаммирования на Java 2 Книга 2 — М.: Бином-Пресс, 2003. — 468 c.
ISBN 5-9518-0051-Х
Скачать (прямая ссылка): tehprogrammjava220032.pdf
Предыдущая << 1 .. 11 12 13 14 15 16 < 17 > 18 19 20 21 22 23 .. 204 >> Следующая

81 If добавление объекта WeatherBean в список List
Удаленный вызов методов
35
weatherlnformation. add ( weather );
inputLine = in.readLine(); // получение информации
II о еледующем городе
in.close (); Il закрытие соединения с Web-сервером
Systern.err.printin( "Weather information updated." )
}
(
11 обработка ошибки при соединении с сервером NWS catch( java.net.ConnectException connectException ) {
connectException.printstackTrace();
System.exit ( 1 );
}
Il обработка других исключений catch< Exception exception ) (
exception.printstack.Trace () ;
System.exit ( 1 );
Il реализация метода интерфейса WeatherService
public List getWeatherlnformation() throws RemoteException
K
return weatherlnformation;
}
Il Запуск удаленного объекта WeatherService
public static void main ( String args[] ) throws Exception
{
System.err.println( "Initializing WeatherService..." ); Il создание удаленного объекта
WeatherService service = new WeatherServicelmpl(); Il задание имени удаленного объекта
String serverObjectName = "rmi://localhost/WeatherService"; Il регистрация удаленного объекта WeatherService в реестре II rmiregistry
Naming.rebind{ serverObjectName, service ); System.err.printin( "WeatherService running." );
»
Рис. 2.2. Класс WeatherServicelmpl реализует удаленный интерфейс WeatherService
Национальная служба погоды National Weather Service обновляет Web-страницу, из которой мы извлекаем информацию, два раза в день. Однако класс WeatherServicelmpl загружает эту информацию только один раз, когда запускается сервер. В упражнениях к главе вам будет предложено модифицировать сервер, чтобы обновлять данные два раза в день. [Замечание. Класс Weather-
36
Глава 2
Servicelm.pl чувствителен к изменениям формата Web-страницы сайта Traveler's Forecast службы National Weather Service. Если у вас возникнут проблемы при выполнении этого упражнения, обратитесь к странице вопросов и ответов на нашем Web-сайте www. deitel. com.]
Класс WeatherServicelmpl расширяет класс UnicastRemoteObject (пакет java. rmi.server) и реализует удаленный интерфейс WeatherService (строки 13-14). Класс UnicastRemoteObject предоставляет базовые функциональные возможности, необходимые для всех удаленных объектов. В частности, конструктор экспортирует объект, чтобы сделать его доступным для приема удаленных вызовов. Экспорт объекта дает возможность удаленному объекту ожидать соединений с клиентами на анонимном порту (т.е. порту, выбираемом компьютером, на котором выполняется удаленный объект). Это дает возможность объекту осуществлять однонаправленное взаимодействие (взаимодействие точка—точка между двумя объектами посредством вызовов методов) с использованием стандартных соединений через сокеты, RMI абстрагируется от деталей этих взаимодействий, поэтому программист может работать, применяя простые вызовы методов. Конструктор WeatherServicelmpl (строки 19-23) вызывает конструктор по умолчанию для класса UnicastRemoteObject (строка 21) и вызывает private метод updateWeatherConditions (строка 22), Перегруженный конструктор для класса UnicastRemoteObject дает возможность программисту задавать дополнительную информацию, такую как номер порта для экспорта удаленного объекта. Все конструкторы UnicastRemoteObject возбуждают исключения RemoteException.
Общая методическая рекомендация 2.5_
Конструкторы и методы класса UnicastRemoteObject возбуждают контролируемое исключение RemoteException, поэтому подклассы класса UnicastRemoteObject должны определять конструкторы, которые также возбуждают исключение RemoteException.
Общая методическая рекомендация 2.6_
Класс UnicastRemoteObject предоставляет базовые функциональные возможности, которые необходимы удаленным объектам для обслуживания удаленных запросов. Классам удаленных объектов не нужно расширять этот класс, если эти классы используют статический метод export-Object класса UnicastRemoteObject для экспорта удаленных объектов.
Метод updateWeatherConditions (строки 26-91) читает информацию о погоде с Web-страницы Traveler's Forecast и сохраняет эту информацию в списке List объектов WeatherBean. В строках 32-33 создается объект URL для Web-страницы Traveler's Forecast. В строках 36-37 вызывается метод openStream класса URL для открытия соединения с заданным URL и «упаковки» этого соединения в объект BufferedRead.
В строках 40-87 осуществляется извлечение информации о погоде из HTML-страницы. В строке 40 определяется строковый разделитель — "TAV12" — который определяет начальную точку, с которой начинается поиск соответствующей информации о погоде. В строках 43-44 осуществляется чтение с Web-страницы Traveler's Forecast, пока не будет достигнут разделитель. Это позволяет пропускать информацию, не нужную для данного приложения.
В строках 48—51 определены две строки, которые представляют заголовки столбцов для информации о погоде. В зависимости от времени дня, заголовки столбцов будут иметь вид
"CITY WEA HI/LO WEA HI/LO"
Удаленный вызов методов
37
после утреннего обновления (обычно около 10.30 по стандартному восточному времени) или
Предыдущая << 1 .. 11 12 13 14 15 16 < 17 > 18 19 20 21 22 23 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100