Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:JAVA. Серверные приложения
.pdf
Приложения 311
После создания запроса и сохранения его в виде внешнего .sql-файла
можно приступать к созданию servlet. При отсутствии желания общения
с первым помощником можно пойти другим путем. При наличии уже существующего файла SQL-запроса, оставшегося от бабушки или созданного другим средством, например SPB, данный файл необходимо импортировать в проект, как обычный ресурс. Это стандартная операция, используемая при создании нового проекта при помощи WSS (рис. П22).
На основе импортированного файла новый помощник — DataBase Wi-
zard будет генерировать несколько (обычно четыре) JSP-страниц. Разработчик самостоятельно выбирает типы страниц обработки запроса сгенерированного файла. С помощью DataBase Wizard можно создать входящую страницу вввода данных, страницу полученных результатов, а
также страницы обработки ошибок и отсутствия результатов (рис. П23).
Ðèñ.. Ï23
Далее DataBase Wizard генерирует JavaBean, содержащий SQL-за-
прос и два файла обработки этого запроса: первый .java-файл servlet и
другой файл конфигурации данного servlet.
На этом этапе создание servlet с WSS заканчивается, и в дальнейшем
созданный .java-файл можно либо транслировать обычным javac-компилятором, либо для последующего улучшения передать в другую среду
разработки, способную работать с Java-кодом, например, VisualAge.
IBM включила собственные пакеты по работе с servlet в набор API,
поставляемый с WEBSphere Application Server. Эти пакеты являются
дополнительными к основной спецификации фирмы SUN. Пакеты фирмы IBM облегчают управление сессией, имеют больше классов по работе с базами данных, лучше приспособлены для генерации servlet, обладают дополнительными методами, предназначенными для работы с
Web-приложениями.
Все основные пакеты по созданию servlet, находятся в jar-архиве ib-
mwebas.jar, помещенного в директории LIB, установленного WEBSphere
Application Server.
Количество классов поставляемых IBM значительно больше стандар-
тного набора API фирмы SUN. И усилие на детальное ознакомление с
данными пакетами со временем выразится в большей продуктивностьи
в создании приложений.
1. com.ibm.servlet.personalization.sessiontracking — пакет содержит
классы, облегчающие работу с клиентской сессией, идентификацией пользователя. Несколько классов предназначено для работы с сессией на
уровне кластера.

312 Приложения
2. com.ibm.websphere.servlet.session.IBMSession — интерфейс, расши-
ренный от стандартного HttpSession для установки контроля над клиентской сессией в режиме кластера.
3. com.ibm.servlet.personalization.userprofile — пакет содержит ин-
терфейсы для получения детальной информации о посетителе Webстраницы. Полученные данные могут быть размещены в базе данных.
4. com.ibm.websphere.userprofile — пакет содержит дополнительную
информацию о клиенте.
5. com.ibm.db — включает несколько классов для упрощения работы
с базой данных, включая организацию доступа, кэширование данных,
поддержку различных SQL-запросов.
6. com.ibm.websphere.servlet.error.servletErrorReport — единствен-
ный класс, описывающий более детально возникшие исключительные
ситуации.
7. com.ibm.websphere.servlet.event — пакет содержит интерфейсы
объектов, реагирующих на события, происходящие в приложении.
8. com.ibm.websphere.servlet.filter — описаны классы работы с цепоч-
кой приложений.
9. com.ibm.websphere.servlet.request — в данном пакете описаны аб-
страктные классы для организации работы с proxy, HttpServletRequestProxy, применяемый для изменений свойств стандартного объекта
HttpServletRequest. Также содержит конвертер ServletInputStreamAdapter для превращения стандартного потока InputStream в поток ServletInputStream.
10. com.ibm.websphere.servlet.response — в данном пакете несколько
абстрактных классов, HttpServletResponseProxy, предназначенных для
перегрузки методов стандартного HttpServletResponse объекта. Также в
пакет включен ServletOutputStreamAdapter класс, позволяющий превращать стандартный поток OutputStream в поток ServletOutputStream
объект и использовать все методы стандартного объекта. Класс StoredResponse полезен для кэширования объекта.

Приложения 313
Приложение C
Использование инструментов фирмы IBM Visual Age for Java и Stored
Procedure Buider для создания SQLJ приложений
SQLJ стандартный способ встраивать SQL-операторы в Java-прило-
жение. В отличии от широко используемого JDBC для организации доступа у базам данных, использование SQLJ значительно проще.
Наибольшую популярность SQLJ приобрел при создании хранимых
процедур. Хранимая процедура выполняется в системном окружении
сервера баз данных, вызов которой клиент осуществляет при помощи
SQL-оператора CALL.
DB2 SQLJ и VAJ SQLJ используется в разработке клиентских при-
ложений, для построения и загрузки Java-приложений, applets, хранимых процедур и пользовательских функций (UDF).
VisualAge
IDE компании IBM по созданию Java приложений VisualAge for Java
поставляется со специальными средствами, облегчающими создание
SQLJ-приложений. Кроме стандартных опций, таких, как DataAccess
bean, предназначенного для работы с базами данных, но основанного на
JDBC, VisualAge содержит все необходимые SQLJ-компоненты, Транслятор, SQLJ-классы и среду выполнения.
Для установки среды выполнения в VisualAge выполняется ряд
стандартных операций добавления специфических модулей.
Поскольку VAJ не использует для создаваемых проектов внешнюю
системную переменную CLASSPATH, все создаваемые объекты, классы, методы, поля и пакеты хранятся в системном репозитории. Для добавления в системный репозиторий обязательных SQLJ-классов выполняются следующие шаги:
В Wokbench — рабочая область VAJ — в меню выбирается File>Qu-
ick Start; или просто нажать клавишу F2 (рис. П24).
Затем активизируется окно свойств Features и окно Add Features в
правом окне. Правой кнопкой выделяется пакет SQLJ Runtime Library.
Будет автоматически произведена операция импортирования, и в Workbench появится новый проект SQLJ Runtime Library.
Для работы с базами данных также необходимо установить пакеты
классов драйверов к различным базам данных. Для DB2 заархивированные пакеты находятся в db2java.zip файле, который также необходимо либо импортировать в рабочий репозиторий операцией импортирования, либо добавить в качестве пакета в системную переменную самого VisualAge (рис. П25).
После успешного выполнения операции импортирования, транслято-
ру необходимо указать как осуществлять проверку для работы с базой
данных. В рабочем поле VisualAge появится еще один проект, называемый SQLJ RunTime Library, это указывает на то, что теперь можно
свободно пользоваться SQLJ классами и пакетами.

314 Приложения
Ðèñ. Ï24
Ðèñ. Ï25

Приложения 315
Ðèñ. Ï26
Перед созданием первого SQLJ-приложения, необходимо установить
свойства соединения с базами данных, такие, как используемый драйвер, имя базы данных и идентификационные параметры подсоединившегося пользователя.
В Workbench — в меню выбирается Workspace>Tools>SQLJ>Proper-
ties (ðèñ. Ï26).
Установка свойств SQLJ является обязательной операцией, посколь-
ку любое SQLJ-приложение использует значения, заданные по умолчанию либо из командной строки, либо из внешнего файла свойств. Именно роль параметров командной строки и данных файла свойств и выполняет ниже показанное окно (рис. П27).
Во всплывающем окне указываются все необходимые параметры ра-
боты с базой данных. В текстовом поле Encoding указывается кодировки применяемые для создаваемого SQLJ-приложения.
Ðèñ. Ï27

316 Приложения
Активация
Выбор Perform online semantic checking предназначен для указания
транслятору проводить проверку SQL-операторов в момент трансляции.
В поле JDBC Driver указывается тип драйвера доступа к базе данных.
В поле Default URL, указывается адрес базы с которым будет ра-
ботать приложение. И, наконец, в полях User и Password вписываются соответствующие данные пользователя для работы с базой данных
(рис. П28).
SQLJ-файл создается во внешнем приложении, способном работать с
SQL-операторами, например Stored Procedure Builder или на крайний
случай с обычным текстовым редактором. После добавления в код операторов Java и SQLJ, файл сохраняется с .sqlj расширением. Добавление в рабочий проект осуществляется операцией импортирования.
В главном меню последовательно выбираются (рис. П29):
Workspace > Tools > SQLJ > Import.
Импортируемый SQLJ-файл можно сразу транслировать или можно
отредактировать Java-операторы, а затем транслировать. Об успешном
выполнении операции импортирования сообщит всплывающее окно.
Ðèñ. Ï28

Приложения 317
Ðèñ. Ï29
Ðèñ. Ï30
Можно и самостоятельно удостовериться в наличии импортированного
SQLJ-файла. Для этого существует операция просмотра ресурсов, используемых в проекте (рис. П30).
Редактирование SQLJ-файла
В ресурсах проекта выбирается нужный SQLJ-файл и затем, если во
всплывающем меню выбрать Tools > SQLJ > Edit, появляется возможность редактировать или, если выбрать Tools > SQLJ > Translate, —
транслировать SQLJ исходный код SQLJ-файла. Там же есть функция
создания отладочной версии создаваемого файла Tools > SQLJ > Create
SQLJ Debug.
Class File
VisualAge содержит стандартный SQLJ-транслятор. Среда выполне-
ния импортируется в рабочую область VisualAge как набор классов. Кодосодержащие .sqlj файлы хранятся в репозитории проекта. Там же
хранятся профили. Для работы с базой данных необходимо добавить в
рабочую область VisualAge архив, содержащий драйвера для доступа к
базам данных (рис. П31, П32).

318 Приложения
Ðèñ. Ï31
Ðèñ. Ï32
При работе с другим SQLJ-трансляторам обязательно надо изменить
свойства транслятора посредством изменений в файле свойств:
x:\IBMVJava\ide\tools\com-ibm-ivj-sqlj\SQLJTranslatorSupportToolProperties.properties.
В среде VisualAge можно создавать приложения SQLJ двумя спосо-
бами. Первый является стандартным способом создания Java-приложения, другой представляет возможность работать с утилитой Stored Procedure Buider, входящую в пакет разработчика DB2.
При установленной на локальной машине базе данных DB2 фирмы
IBM, в рабочую область добавляется функция вызова Stored Procedure
Builder.
Stored Procedure Builder
Созданием простых SQLJ-приложений роль встроенных SQL-опера-
торов не ограничивается. Работа с данными, хранящимися в СУБД, является основной задачей любого SQLJ-приложения. Но работу с этими
данными можно организовать по-разному, либо просто обращаться к
данным, либо создать специальную программу, выполняющуюся на сервере базы данных. Программа для организации очень больших запросов, выполняемая в самой СУБД, называется хранимой процедурой.
В обычном смысле хранимая процедура представляет скомпилированную и сохраненную в базе данных последовательность SQL-операторов.
Использование именно SQLJ, обладающего более высокой производите-

Приложения 319
льностью по сравнению с JDBC, позволяет создавать хранимые процедуры для любой базы данных и любой платформы, поддерживающие
работу с Java, с очень хорошими показателями выполнения. С другой
стороны, использование SQLJ позволяет проводить синтаксический
анализ, проверку правильности, оптимизацию и компиляцию всей последовательности SQL-операторов приложения заранее. Для максимальной производительности выполнения программы, программист использует операторы SQL, которые должны выполняться, создавая из
них процедуру и сохраняя ее в рабочей СУБД. Во время выполнения
клиентского приложения, просто вызывается оператор вызова процедуры, присущий каждой версии СУБД, после чего сервер выполняет SQLпоследовательность хранимой процедуры.
Работа с хранимой процедурой, в отличие от обычного SQLJ-прило-
жения, имеет ряд дополнительных требований. Во-первых, поскольку
хранимая процедура выполняется на сервере базы данных, то для обращения к ней требуется создание клиентского приложения, работающего
с данной хранимой процедурой. Во-вторых, клиентское приложение, во
избежание неправильной трансформации типов, должно быть написано
на том же языке, на котором реализована и хранимая процедура, в данном случае это, конечно же, Java. После создания хранимой процедуры,
она обязательно должна быть зарегистрирована в исполняемой базе
данных при помощи оператора CREATE PROCEDURE или его аналога в
других базах данных. Наконец, сама база данных должна поддерживать
работу как с хранимыми процедурами, так и с языком Java.
При работе в сети, преимущества использования SQLJ становятся
более очевидными. Обращение к серверу базы данных осуществляется
один раз, в момент вызова хранимой процедуры SQL-оператором CALL.
Сервер же возвращает только результат запросов выполненных хранимой процедурой.
Как и всякое Java-приложение, коим также является и SQLJ-прило-
жение, хранимая процедура, реализованная на Java может быть одним
классом, файлом .class или же помещаться в jar-архиве. Поэтому при
вызове данной хранимой процедуры указывается либо полное имя
класса с именем пакета, либо просто имя класса. При этом созданная
хранимая процедура должна находиться в специальной директории, с
которой работает база данных. Для СУБД компании IBM чаще всего это
директория x:\SQLLIB\FUNCTION, где x:\sqllib физическое место
установленной базы данных.
Для создания хранимых процедур на языке Java, компания IBM по-
ставляет вместе с пакетом разработки для своей базы данных DB2, прекрасное графическое средство Stored Procedure Builder (рис. П33).
IBM DB2 Stored Procedure Builder (SPB) — утилита по созданию
хранимых процедур и функций с развитым графическим интерфейсом.
Stored Procedure Builder предназначен для создания двух видов про-
грамм: хранимых процедур выполняемых в базе данных и клиентских
приложений работающих на рабочей станции.
Используя SPB можно выполнять следующие задачи:
•
создание новой процедуры;
•
создать процедуру на локальном или удаленном сервере DB2;

320 Приложения
Ðèñ. Ï33
модифицировать существующие хранимые процедуры;
•
протестировать созданную хранимую процедуру.
•
SPB можно загрузить, как отдельное приложение, на любой опера-
ционной системе для которой существует версия DB2. SPB имеет тесную интеграцию с широко распространенными средствами:
•
IBM VisualAge for Java;
•
Microsoft Visual Studio;
•
Microsoft Visual Basic.
SPB имеет встроенную поддержку Java и набора API для работы с
базами данных Java Database Connectivity (JDBC).
Создание новой хранимой процедуры при помощи SPB довольно про-
сто. В SPB реализован ряд хорошо зарекомендовавших себя «помощников». SmartGuide и SQL Assistant облегчают создание процедуры до нескольких кликов мышкой. Используя SmartGuide при создании новой
процедуры, создается SQL-структура приложения. Встроенный редактор необходим при изменении сгенерированного кода. Для проверки работы хранимой процедуры, SPB позволяет произвести моментальную
загрузку созданной процедуры. Результат также можно запрограммировать на различные типы. Можно указать возвращать единственное
значение, несколько значений или только выходящие параметры. Можно просто не указывать выходящее значение, тогда процедура просто
изменит структуру таблицы. Использование SmartGuide помогает определить входные и выходные параметры хранимой процедуры, используемые как переменные в клиентском приложении.
Выполнение хранимой процедуры в SPB позволяет разработчику
протестировать хранимую процедуру, прежде чем она будет вызываться базой данных. При использовании SPB разработчик может менять
значения переменных без перекомпиляции процедуры. SPB представляет разработчику прекрасные средства отладки хранимых процедур.
Для этого предусмотрен специальный режим отладки.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
