Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

JAVA. Серверные приложения

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
Приложения 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, HttpServletRequest­Proxy, применяемый для изменений свойств стандартного объекта HttpServletRequest. Также содержит конвертер ServletInputStreamA­dapter для превращения стандартного потока InputStream в поток Ser­vletInputStream.
10. com.ibm.websphere.servlet.response — в данном пакете несколько
абстрактных классов, HttpServletResponseProxy, предназначенных для перегрузки методов стандартного HttpServletResponse объекта. Также в пакет включен ServletOutputStreamAdapter класс, позволяющий пре­вращать стандартный поток OutputStream в поток ServletOutputStream объект и использовать все методы стандартного объекта. Класс Stored­Response полезен для кэширования объекта.
Приложения 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. Будет автоматически произведена операция импортирования, и в Work­bench появится новый проект 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\SQLJTranslatorSupportToolProper­ties.properties.
В среде VisualAge можно создавать приложения SQLJ двумя спосо-
бами. Первый является стандартным способом создания Java-приложе­ния, другой представляет возможность работать с утилитой Stored Pro­cedure 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 представ­ляет разработчику прекрасные средства отладки хранимых процедур. Для этого предусмотрен специальный режим отладки.