В этой главе описано приложение-образец videoapp, иллюстрирующее использование службы LiveWire Database Service. Рассмотрено, как сконфигурировать рабочую среду для запуска приложений videoapp и oldvideo.
В главе имеются следующие разделы:
Netscape-серверы поставляются с двумя приложениями-образцами для работы с базами
данных, videoapp
и
oldvideo
, которые иллюстрируют работу LiveWire Database Service.
Эти приложения весьма похожи; они отслеживают прокат видео в воображаемом
видео-салоне. Приложение videoapp
демонстрирует использование
объектов DbPool
и Connection
.
Приложение oldvideo
демонстрирует использование предопределённого
объекта database
.
Есть несколько небольших ограничений на использование этих приложений:
videoapp
не может
базироваться на БД Informix. Приложение oldvideo
может
использоваться с Informix.videoapp
использует курсоры, захватывающие несколько HTML-страниц.
Если ваш драйвер БД - однопоточный, эти курсоры могут иметь блокировки для БД
и препятствовать доступу к ним других пользователей.Прежде чем Вы сможете запустить эти приложения, необходимо сделать незначительные изменения в исходных файлах и создать базу данных для видео. В данном разделе указывается, какие файлы Вы обязаны изменить и какие процедуры выполнить, чтобы внести эти изменения и создать БД для каждого из поддерживаемых серверов БД. См. конкретную информацию в разделе, посвящённом Вашему серверу БД.
ПРИМЕЧАНИЕ:
Ваш сервер БД обязан быть настроен и запущен перед началом создания видео-БД, и Вы обязаны сконфигурировать сервер и клиента БД так, как указано в Главе 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."
Кроме того, убедитесь, что переменная окружения 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.
ifx_load.csh
для videoapp
и для oldvideo
.cd c:\netscape\server\js\samples\videoapp\ifxВы можете также запустить эти команды из директории
ifx_load.bat
oldvideo\ifx
:
Прежде чем использовать нижеуказанные инструкции, Вы обязаны сконфигурировать
Ваш Oracle-клиент, как указано в разделе
"Oracle." Помимо этого, Ваш клиент обязан
быть сконфигурирован для запуска утилит Oracle. Чтобы запускать SQL Plus, Вам
может понадобиться установить переменную окружения ORACLE_SID
.
SQL-файлы для создания видео-БД в Oracle, находятся в двух директориях:
$NSHOME\js\samples\videoapp\ora
$NSHOME\js\samples\oldvideo\ora
SQL>
введите
такую команду:Start $NSHOME\js\samples\videoapp\ora\ora_video.sqlВы можете также запустить этот скрипт из директории
oldvideo
. Этот SQL-скрипт
не создаёт новую БД. Он создаёт таблицы Oracle в текущем экземпляре.ora_load
для загрузки видео-таблиц с
данными. В NT: запустите пакетный файл
ora_load.bat
для загрузки видео-таблиц с данными. Вы обязаны
отредактировать соответствующий файл для подключения к Вашему серверу;
инструкции об этом содержатся в файле.
Прежде чем использовать нижеуказанные инструкции, Вы обязаны сконфигурировать
Ваш Sybase-клиент, как указано в разделе
"Sybase." Кроме того, в Unix убедитесь, что
переменная окружения PATH
содержит $SYBASE\bin
и DSQUERY
указывает на ваш сервер.
SQL-файлы для создания видео-БД в Sybase, находятся в двух директориях:
$NSHOME\js\samples\videoapp\syb
$NSHOME\js\samples\oldvideo\syb
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
.ПРИМЕЧАНИЕ:
Если у Вас на машине установлены и Sybase, и MS SQL Server или DB2, потенциально может возникнуть конфликт имён. Эти производители поставляют утилиты с одинаковыми названиями (
bcp
иisql
). При запуске этих скриптов убедитесь, что переменная окружения настроена для запуска корректной утилиты.
Прежде чем использовать нижеуказанные инструкции, Вы обязаны сконфигурировать
Ваш Sybase-клиент, как указано в разделе
"ODBC." Кроме того, в Unix установите DSQUERY
так, чтобы она указывала на Ваш сервер.
SQL-файлы для создания видео-БД в MS SQL Server, находятся в двух директориях:
$NSHOME\js\samples\videoapp\mss
$NSHOME\js\samples\oldvideo\mss
mss_load userid password
Например:c:\netscape\server\js\samples\videoapp\mss\mss_load sa
ПРИМЕЧАНИЕ:
Если у Вас на машине установлены и Sybase, и MS SQL Server или DB2, потенциально может возникнуть конфликт имён. Эти производители поставляют утилиты с одинаковыми названиями (
bcp
иisql
). При запуске этих скриптов убедитесь, что переменная окружения настроена для запуска корректной утилиты.
SQL-файлы для создания видео-БД в DB2, находятся в двух директориях:
$NSHOME\js\samples\videoapp\db2
$NSHOME\js\samples\oldvideo\db2
PATH
обязана содержать директории $DB2PATH/bin
, $DB2PATH/misc
и $DB2PATH/adm
.db2_load.csh
; в NT это скрипт db2_load.bat
.
Отредактируйте соответствующий файл db2_load
и измените следующие
параметры, отражающие Ваше окружение:<nodename>
:
псевдоним имени узла/node name alias<hostname>
: имя хоста узла, где находится целевая БД<service-name>
:
имя службы или имя экземпляра из файлов службы<database-name>
:
имя БД<user>
: авторизованный
пользователь<password>
: пароль пользователя/etc/services
имеют вхождения для экземпляра или имени службы, если Вы создаёте БД на удалённом DB2-сервере.db2_load
запускает скрипты db2_video.sql
и import.sql
.
Эти вспомогательные скрипты создают видео-таблицы и загружают их данными из
файлов *.del
.
Они не создают новую БД. Они создают таблицы DB2 в псевдониме локальной БД,
специфицированном в скрипте db2_load
.ПРИМЕЧАНИЕ:
Если у Вас на машине установлены и DB2, и Sybase или MS SQL Server, потенциально может возникнуть конфликт имён. Эти производители поставляют утилиты с одинаковыми названиями (
bcp
иisql
). При запуске этих скриптов убедитесь, что переменная окружения настроена для запуска корректной утилиты.
В этом разделе говорится о запуске приложения videoapp
. Это
значительно более сложный пример, нежели образцы, рассмотренные в
Главе 4, "Быстрое Начало с Примерами Приложений". В этой главе дан только его
обзор. Вы должны просмотреть также некоторые файлы, чтобы получше познакомиться с приложением.
После создания видео-БД и изменения параметров соединения с БД Вы можете запустить приложение:
http://server.domain
/videoapp
После соединения с БД менеджер Application Manager выводит домашнюю страницу videoapp
,
как показано на Рисунке 13.1.
Если соединение с БД невозможно установить, Вы увидите сообщение об ошибке. Убедитесь, что введены корректные параметры соединения с БД, как указано в разделе "Соединение с Базой Данных и Рекомпиляция", приложение рекомпилировано и рестартовало.
Первое, что нужно сделать при установлении соединения, это создать нового потребителя/customer. Пока Вы этого не сделаете, нет ни одного потребителя, который может использовать другие функции приложения.
Вы можете использовать videoapp
как customer или как administrator.
Как customer Вы можете:
Запустите приложения и сделайте несколько выборов для выполнения различных действий.
Исходные HTML-файлы videoapp
,
перечисленные в следующей таблице, обильно комментируются.
videoapp
Этот раздел ориентирует Вас на реализацию некоторой функциональности в 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
просто выводит кнопки для возврата на
домашнюю страницу или на страницу для добавления нового потребителя.
Как способ применения функциональности LiveWire
рассмотрим пример модернизации videoapp
. Вот что можно сделать:
sharedConnections
предполагает наличие соединения у пользователя.
Вы можете изменить start.htm
, чтобы выполнять проверку наличия ID у данного
пользователя в этом массиве и проверить, хранится ли соединение в нужном месте.
См. раздел "Совместное Использование Массива Пула Соединений".Дата последнего обновления: 29 сентября 1999 г.
© Copyright © 1999 Sun Microsystems, Inc. Некоторая часть Copyright © 1999 Netscape Communications Corp. Все Права Зарезервированы.