Доступ к базам данных из Javaпрограмм и проблемы русификации

       

Сервлеты на базе Apache



3.2 Сервлеты на базе Apache

Для тех, кто имеет дело с различными компьютерными платформами и стремится к универсализму, выбор Apache HTTP-сервера является, пожалуй, самым подходящим. Разве плохо, когда написанные вами модули могут работать и на ПК и на многопроцессорных высокопроизводительных системах, причем инсталляция и компоновка рабочих программ, как правило не требуется, дело сводится к простому копированию. Можно, не выходя из офиса, перемещать рабочие программы в специальные каталоги Web-сервера, находящегося за тридеять земель, и они мгновенно могут быть востребованы десятками пользователей, которым нет необходимости загружать их на свои компьютеры. До недавнего времени все Web-серверы могли вызывать на выполнение только три типа процессов: CGI, ISAPI или NSAPI, причем два последних чаще всего были реализованы на Wintel-платформе. Так, с появлением Delphi-3 многие стали предлагать свои разработки в виде Web-модулей, но аппетиты пользователей умерялись разработчиками, которые могли предложить только вариант Web, работающий под Windows-95/NT, и для связи с СУБД на больших машинах приходилось применять некое подобие Gateway-ODBC. Такой вариант не всегда оказывался эффективным, тем более, что протокол HTTP при каждом новом запросе требовал перезагрузки модуля Применение сервлетов в связке с СУБД решает эту проблему. Для Apache существует специальный программный компонент JServ, который также как и сам сервер в исходных кодах распространяется совершенно бесплатно. При запуске Apache автоматически стартует Java-обработчик, которому и будут передаваться на исполнение все запросы, связанные с запуском Java-программ. Наоборот, весь вывод из Java переадресуется непосредственно в Web, который аккуратным образом передает его запросившему браузеру. Скорость выполнения Java-приложений зависит от производительности компьютера, на котором сконфигурирован Web-сервер Apache. Если это, к примеру UltraSparc-3000 c Java-виртуальной машиной HotSpot, то скорость может быть очень большой, в десятки, а то и в сотни раз быстрее, чем на обычной NT-машине. Apache, в отличие от браузеров не имеет собственной виртуальной машины Java, а настраивается на ту, которая сгенерирована для данной платформы. Такой подход чрезвычайно гибок, ибо позволяет постоянно обновлять Java-среду, наращивать библиотеку классов и ничего не изменять в настройках Apache. Впрочем, и в самих конфигурационных файлах Apache для программистов имеется масса полезных вещей, они свободно корректируются, открыты для добавлений и предоставляют гораздо больше простора для маневра по сравнению с жестко запрограммированными системами для администрирования Web-узлов, такими как Fastrack, или Java Web Server. Для того, чтобы использовать Apache во взаимодействии с Java, необходимо инсталлировать продукт Jserv, содержащий необходимые библиотеки Java-классов, затем изменить конфигурационный файл Apache Configuration, добавив в него строку:


Module jserv_module mod_jserv.o

(модуль mod_jserv. c должен находиться при этом в src/директории Apache). После этого необходимо рекомпилировать Apache с помощью программы make. Затем можно изменить основной конфигурационный файл Apache httpd.conf, добавив в него строки вида:

<IfModule mod_jserv.c> ServletProperties conf/servlet.properties ServletPort 8007 ServletBinary /opt1/jdk1.1.5/bin/java ServletClassPath /opt1/jdk1.1.5/lib/classes.zip ServletClassPath /opt1/local/etc/httpd/jserv/lib/servclasses.zip ServletClassPath /opt1/local/etc/httpd/jserv/classes ServletClassPath /opt1/JSDK1.0.1/lib/classes.zip ServletErrorLog logs/jserv_log ServletAlias /servlets /opt1/local/etc/httpd/ jserv/servlets ServletAuthExport Off # AddHandler jhtml-parser .jhtml # Action jhtml-parser /servlets/ org.apache.jserv.JServSSI </IfModule>

Разумеется, в каждом конкретном случае директории могут быть разными, однако, сразу после старта Apache HTTP-сервера по команде httpd, он автоматически запускает Java-обработчик, который и будет загружать и исполнять все запрошенные сервлеты, в том числе и те, которые будут работать с базами данных. Преимущество Apache при работе с базами данных заключается в том, что поскольку он, также как и Java, доступен в исходных кодах, можно эффективно использовать его расширяемую архитектуру и дополнять его различными промежуточными фильтрами на Java и на языке C, которые, по усмотрению разработчиков могут выполнять различные полезные функции.


Содержание раздела