Оглавление | Назад | Вперёд | Индекс

Глава 13
Приложения-Образцы Videoapp и Oldvideo

В этой главе описано приложение-образец videoapp, иллюстрирующее использование службы LiveWire Database Service. Рассмотрено, как сконфигурировать рабочую среду для запуска приложений videoapp и oldvideo.

В главе имеются следующие разделы:

О Приложениях Videoapp и Oldvideo


Netscape-серверы поставляются с двумя приложениями-образцами для работы с базами данных, videoapp и oldvideo, которые иллюстрируют работу LiveWire Database Service. Эти приложения весьма похожи; они отслеживают прокат видео в воображаемом видео-салоне. Приложение videoapp демонстрирует использование объектов DbPool и Connection. Приложение oldvideo демонстрирует использование предопределённого объекта database.

Есть несколько небольших ограничений на использование этих приложений:

Конфигурирование Среды


Прежде чем Вы сможете запустить эти приложения, необходимо сделать незначительные изменения в исходных файлах и создать базу данных для видео. В данном разделе указывается, какие файлы Вы обязаны изменить и какие процедуры выполнить, чтобы внести эти изменения и создать БД для каждого из поддерживаемых серверов БД. См. конкретную информацию в разделе, посвящённом Вашему серверу БД.

ПРИМЕЧАНИЕ:

Ваш сервер БД обязан быть настроен и запущен перед началом создания видео-БД, и Вы обязаны сконфигурировать сервер и клиента БД так, как указано в Главе 10, "Конфигурирование Базы Данных".

Кроме того, скрипты создания БД используют утилиты БД, поставляемые с Вашими БД. Вы уже должны знать, как пользоваться этими утилитами.

Соединение с БД и Рекомпиляция


Приложение videoapp находится в директории $NSHOME\js\samples\videoapp, где $NSHOME это директория установки Netscape-сервера. Приложение oldvideo находится в директории $NSHOME\js\samples\oldvideo.

Для каждого приложения Вы обязаны изменить строку с информацией о соединении в исходном HTML-файле start.htm, чтобы настроиться на среду окружения Вашей БД. О параметрах соединения см. раздел "Пул Соединений Базы Данных"; дополнительно см. также описание метода connect в книге Серверный JavaScript. Справочник.

Для приложения videoapp измените эту строку:

project.sharedConnections.pool = 
   new DbPool ("<Server Type>", "<Server Identifier>", "<User>", "<Password>", "<Database>", 2, false)

Для приложения oldvideo измените эту строку:

database.connect ("INFORMIX", "yourserver", "informix", "informix", "lw_video")

Сохраните изменения и рекомпилируйте приложение. Для рекомпиляции приложения из командной строки запустите его build-файл, расположенный в директории приложения. Убедитесь, что переменная окружения PATH содержит путь к компилятору (обычно это $NSHOME\bin\https).

Рестартуйте приложения в JavaScript Application Manager'е.

Создание Базы Данных


Имеются два набора скриптов создания БД для videoapp и oldvideo, находящиеся в соответствующих этим приложениям директориях. Наборы скриптов идентичны. Если Вы запустите один набор, оба приложения смогут использовать БД.

При первом запуске скриптов Вы можете получать ошибки, касающиеся стирания БД или таблиц, которые ещё не существуют. Это нормально; можно спокойно игнорировать эти сообщения.

Informix


Прежде чем использовать нижеуказанные инструкции, Вы обязаны сконфигурировать Ваш Informix-клиент, как указано в разделе "Informix." Кроме того, убедитесь, что переменная окружения PATH содержит путь к $INFORMIXDIR\bin и что Ваш клиент сконфигурирован для использования утилит Informix.

SQL-файлы для создания видео-БД (lw_video) в Informix находятся в двух директориях:

$NSHOME\js\samples\videoapp\ifx 
$NSHOME\js\samples\oldvideo\ifx

ПРИМЕЧАНИЕ:

Не забудьте, что пути в этом учебнике, если они относятся и к NT, и к Unix, даются в формате NT. В Unix Вы используете $NSHOME/js/samples/videoapp/ifx.

  1. В Unix войдите в систему как пользователь "informix" и запустите скрипт оболочки ifx_load.csh для videoapp и для oldvideo.

  2. В NT дважды щёлкните в группе программ Informix Server иконку Command-Line Utilities, чтобы открыть окно DOS, затем запустите следующие команды:
    cd c:\netscape\server\js\samples\videoapp\ifx
    ifx_load.bat
    Вы можете также запустить эти команды из директории oldvideo\ifx:
  3. Теперь Вы можете запускать приложение, сделав предварительно изменения, описанные в разделе "Соединение с Базой Данных и Рекомпиляция".

Oracle


Прежде чем использовать нижеуказанные инструкции, Вы обязаны сконфигурировать Ваш Oracle-клиент, как указано в разделе "Oracle." Помимо этого, Ваш клиент обязан быть сконфигурирован для запуска утилит Oracle. Чтобы запускать SQL Plus, Вам может понадобиться установить переменную окружения ORACLE_SID.

SQL-файлы для создания видео-БД в Oracle, находятся в двух директориях:

$NSHOME\js\samples\videoapp\ora
$NSHOME\js\samples\oldvideo\ora
  1. И в Unix, и в NT: стартуйте SQL Plus. Из промпта SQL> введите такую команду:
  2. Start $NSHOME\js\samples\videoapp\ora\ora_video.sql
    Вы можете также запустить этот скрипт из директории oldvideo. Этот SQL-скрипт не создаёт новую БД. Он создаёт таблицы Oracle в текущем экземпляре.
  3. В Unix: запустите скрипт-файл ora_load для загрузки видео-таблиц с данными. В NT: запустите пакетный файл ora_load.bat для загрузки видео-таблиц с данными. Вы обязаны отредактировать соответствующий файл для подключения к Вашему серверу; инструкции об этом содержатся в файле.
  4. Теперь можно запускать приложение, сделав изменения, описанные в разделе "Соединение с Базой Данных и Рекомпиляция".

Sybase


Прежде чем использовать нижеуказанные инструкции, Вы обязаны сконфигурировать Ваш Sybase-клиент, как указано в разделе "Sybase." Кроме того, в Unix убедитесь, что переменная окружения PATH содержит $SYBASE\bin и DSQUERY указывает на ваш сервер.

SQL-файлы для создания видео-БД в Sybase, находятся в двух директориях:

$NSHOME\js\samples\videoapp\syb
$NSHOME\js\samples\oldvideo\syb
  1. Запустите соответствующий скрипт из командной строки. В Unix это:
  2. syb_video.csh userid password
    Например:
    $NSHOME\js\samples\videoapp\syb\syb_load.csh sa
    В NT это скрипт:
    syb_load userid
    password
    Например:
    c:\netscape\server\js\samples\videoapp\syb\syb_load sa
    Можно также запустить скрипт из директории oldvideo.
  3. Теперь можно запускать приложение, сделав изменения, описанные в разделе "Соединение с Базой Данных и Рекомпиляция".

ПРИМЕЧАНИЕ:

Если у Вас на машине установлены и Sybase, и MS SQL Server или DB2, потенциально может возникнуть конфликт имён. Эти производители поставляют утилиты с одинаковыми названиями (bcp и isql). При запуске этих скриптов убедитесь, что переменная окружения настроена для запуска корректной утилиты.

Microsoft SQL Server (только для NT)


Прежде чем использовать нижеуказанные инструкции, Вы обязаны сконфигурировать Ваш Sybase-клиент, как указано в разделе "ODBC." Кроме того, в Unix установите DSQUERY так, чтобы она указывала на Ваш сервер.

SQL-файлы для создания видео-БД в MS SQL Server, находятся в двух директориях:

$NSHOME\js\samples\videoapp\mss
$NSHOME\js\samples\oldvideo\mss
  1. Из командной строки DOS запустите пакетный файл:
  2. mss_load userid password
    Например:
    c:\netscape\server\js\samples\videoapp\mss\mss_load sa
  3. Теперь можно запускать приложение, сделав изменения, описанные в разделе "Соединение с Базой Данных и Рекомпиляция".

ПРИМЕЧАНИЕ:

Если у Вас на машине установлены и Sybase, и MS SQL Server или DB2, потенциально может возникнуть конфликт имён. Эти производители поставляют утилиты с одинаковыми названиями (bcp и isql). При запуске этих скриптов убедитесь, что переменная окружения настроена для запуска корректной утилиты.

DB2


SQL-файлы для создания видео-БД в DB2, находятся в двух директориях:

$NSHOME\js\samples\videoapp\db2
$NSHOME\js\samples\oldvideo\db2
  1. (Только в Unix) Ваша переменная окружения PATH обязана содержать директории $DB2PATH/bin, $DB2PATH/misc и $DB2PATH/adm.
  2. Прежде чем запустить эти скрипты, Вы обязаны уже иметь установленный DB2 Software Developer's Kit (DB2 SDK).
  3. Также, прежде чем Вы сможете запустить скрипты для создания таблиц, Вы обязаны отредактировать их, чтобы изменить некоторые параметры. В Unix это скрипт db2_load.csh; в NT это скрипт db2_load.bat. Отредактируйте соответствующий файл db2_load и измените следующие параметры, отражающие Ваше окружение:
  4. Убедитесь, что Ваши файлы /etc/services имеют вхождения для экземпляра или имени службы, если Вы создаёте БД на удалённом DB2-сервере.
  5. Запустите соответствующую версию скрипта из окна команд DB2. Скрипт db2_load запускает скрипты db2_video.sql и import.sql. Эти вспомогательные скрипты создают видео-таблицы и загружают их данными из файлов *.del. Они не создают новую БД. Они создают таблицы DB2 в псевдониме локальной БД, специфицированном в скрипте db2_load.

ПРИМЕЧАНИЕ:

Если у Вас на машине установлены и DB2, и Sybase или MS SQL Server, потенциально может возникнуть конфликт имён. Эти производители поставляют утилиты с одинаковыми названиями (bcp и isql). При запуске этих скриптов убедитесь, что переменная окружения настроена для запуска корректной утилиты.

Запуск Videoapp


В этом разделе говорится о запуске приложения videoapp. Это значительно более сложный пример, нежели образцы, рассмотренные в Главе 4, "Быстрое Начало с Примерами Приложений". В этой главе дан только его обзор. Вы должны просмотреть также некоторые файлы, чтобы получше познакомиться с приложением.

После создания видео-БД и изменения параметров соединения с БД Вы можете запустить приложение:

http://server.domain/videoapp

После соединения с БД менеджер Application Manager выводит домашнюю страницу videoapp,
как показано на Рисунке 13.1.

Рисунок 13.1   Домашняя страница Videoapp

Если соединение с БД невозможно установить, Вы увидите сообщение об ошибке. Убедитесь, что введены корректные параметры соединения с БД, как указано в разделе "Соединение с Базой Данных и Рекомпиляция", приложение рекомпилировано и рестартовало.

Первое, что нужно сделать при установлении соединения, это создать нового потребителя/customer. Пока Вы этого не сделаете, нет ни одного потребителя, который может использовать другие функции приложения.

Вы можете использовать videoapp как customer или как administrator. Как customer Вы можете:

Как administrator Вы можете:

Запустите приложения и сделайте несколько выборов для выполнения различных действий.

Взгляд на Исходные Файлы


Исходные HTML-файлы videoapp, перечисленные в следующей таблице, обильно комментируются.

Таблица 13.1  Первичные исходные файлы приложения videoapp
home.htm

Страница по умолчанию. Имеет ссылки на pick.htm, status.htm, rentals.htm, customer.htm и delete.htm. Если нет соединения с БД, эта страница перенаправляет клиента на страницу start.htm.

start.htm

Соединяет приложение с БД, стартует транзакцию и переводит обратно на home.htm.

abort.htm

Отменяет одну транзакцию и начинает новую.

save.htm

Подтверждает/Commits транзакцию и начинает новую.

pick.htm

Позволяет потребителю взять клип напрокат. Содержит фрэймы для category.htm, videos.htm и pickmenu.htm.

Файл category.htm показывает категории видео.

Файл videos.htm показывает все видео в выбранной категории и соединён с rent.htm для аренды определённых видео.

Файл pickmenu.htm показывает другие страницы.

status.htm

Выводит видео, имеющиеся у потребителя в данный момент. Если потребитель не выбрал ID, перенаправляет его на страницу client.htm, на которой можно выбрать customer ID.

rentals.htm

Выводит список всех взятых видео. Когда администратор щёлкает на названии одного их них, выбранная позиция отправляется на return.htm, которая выполняет действия по возвращению видео, затем направляет обратно на rentals.htm.

customer.htm

Администратор может ввести здесь нового потребителя. Отправляет введённые в форму данные на add.htm, где выполняются действия по вводу нового потребителя, затем возвращает на customer.htm.

delete.htm

Здесь администратор может удалить потребителя. Выводит список потребителей со ссылками на remove.htm, где удаляется специфицированный ряд из таблицы потребителей, затем возвращает на delete.htm.

modify.htm

Администратор может изменить здесь данные потребителя. Выводит список из первых 5 потребителей со ссылками на страницы modify1.htm и modify2.htm. Эти страницы обновляют специфицированный ряд в таблице потребителей и возвращают обратно на modify.htm. Файл modify3.htm выводит следующих потребителей, 5 за один раз.

Архитектура Приложения


Этот раздел ориентирует Вас на реализацию некоторой функциональности в videoapp. Он описывает, как приложение работает с БД и детали процедуры аренды видео. Другие задачи похожи.

Соединение и Процесс Работы


Когда пользователь инициирует сессию с приложением videoapp, входя на начальную страницу (home.htm), videoapp проверяет, имеется ли уже соединение с БД. Если это так, videoapp предполагает, что не только приложение, но и пользователь уже соединены с БД, и продолжает работу.

Если соединение не установлено, videoapp перенаправляет на страницу start.htm. На ней приложение создаёт единый пул соединений с БД, используемый всеми потребителями, получает соединение для пользователя и стартует транзакцию с БД для этого соединения. Затем перенаправляет обратно на home.htm для продолжения. Пользователь никогда не видит перенаправления.

Транзакция базы данных стартует на странице start.htm  и остаётся открытой, пока пользователь явно не сохранит или не отменит изменения, щёлкнув кнопку Save Changes или Abort Changes. При этом запускается save.htm или abort.htm. Эти страницы подтверждают или откатывают изменения открытой транзакции, а затем немедленно начинают новую транзакцию. Поэтому соединение потребителя всегда остаётся открытым.

Получив соединение с БД, videoapp выводит пользователю главную страницу. С неё пользователь может сделать выбор - такой как аренда клипа или добавление нового потребителя. Каждая из этих опций выводит разные страницы, которые содержат операторы серверного JavaScript. Многие страницы имеют операторы, использующие соединение для взаимодействия с БД, выводя информацию или внося изменения в БД.

Первое, что Вы обязаны сделать при первом соединении, это добавить нового потребителя. Пока Вы этого не сделаете, отсутствуют потребители для выполнения других действий программы.

Взятие Клипа Напрокат


Страница pick.htm содержит набор фрэймов, где пользователь может взять клип напрокат. Набор фрэймов состоит из страниц category.htm, videos.htm и pickmenu.htm.

Страница category.htm запрашивает в БД список известных категорий клипов. Затем выводит эти категории в виде списка ссылок в таблице левого фрэйма. Если пользователь щёлкает на одной из ссылок, videoapp выводит video.htm в правом фрэйме. Есть несколько интересных моментов, касающихся серверного кода, выполняющего эти задачи. На странице Вы можете найти такие строки:

var userId = unscramble(client.userId)
var bucket = project.sharedConnections.connections[userId]
var connection = bucket.connection

Эти операторы имеются на большинстве страниц videoapp. Они запрашивают соединение из того места, где оно хранится в объекте project. Следующая строка получает новый курсор, применимый для данной задачи:

cursor = connection.cursor("select * from categories");

Вариант этого оператора имеется в начале большинства задач.

Вот следующий интересный набор операторов:

<SERVER>
...
while (cursor.next()) {
   catstr = escape(cursor.category)
</SERVER>
<TR><TD><A HREF=`"videos.htm?category=" +
catstr` TARGET="myright">
<SERVER>write(cursor.category);</SERVER></A>
</TD>
</TR>
<SERVER>
} // окончание цикла while

Этот цикл создаёт в курсоре ссылку для каждой категории. Обратите особое внимание на оператор:

<A HREF=`"videos.htm?category=" +
catstr` TARGET="myright">

Эта строка создаёт ссылку на videos.htm. Она содержит в URL имя категории. Предположим, это категория Comedy. Оператор создаёт такую ссылку:

<A HREF="videos.htm?category=Comedy" TARGET="myright">

Когда пользователь щёлкает на ссылке, сервер переходит на страницу videos.htm и устанавливает значение свойства category объекта request в Comedy.

Страница videos.htm может обрабатываться из pick.htm или из category.htm. В первом случае свойство category не устанавливается, поэтому страница выводит сообщение, предлагающее пользователю выбрать категорию. Если category правильно установлено, videos.htm входит в БД для вывода информации обо всех клипах данной категории. Эта страница использует ту же технику, что и category.htm, для конструирования информации и создания ссылок на странице rent.htm.

Страница rent.htm фактически записывает взятые пользователем напрокат клипы. Она получает информацию из запроса и обновляет таблицу в БД для отражения новой аренды. Эта страница выполняет обновление, но не подтверждает изменения, пока пользователь не выберет Save Changes или Abort Changes.

Страница pickmenu.htm просто выводит кнопки для возврата на домашнюю страницу или на страницу для добавления нового потребителя.

Модифицирование videoapp


Как способ применения функциональности LiveWire рассмотрим пример модернизации videoapp. Вот что можно сделать:

Оглавление | Назад | Вперёд | Индекс

Дата последнего обновления: 29 сентября 1999 г.

© Copyright © 1999 Sun Microsystems, Inc. Некоторая часть Copyright © 1999 Netscape Communications Corp. Все Права Зарезервированы.

Hosted by uCoz