Для установки Apache JServer и GNU JSP вам понадобятся:
HTTP Server Apache в исходных кодах ( я работаю на версии Apache1.3.12rusPL29.4)
Apache JServer в любом виде, но лучше конечно в исходниках (я пробовал на версии ApacheJserv1.1.1). необходимые файлы mod_jserv.so и ApacheJServ.jar (или сооответственно исходники этих файлов для последующей компиляции)
JDK 1.2 SE (Java Development Kit 1.2 Standart Edition) для Linux
JSDK обязательно версии 2.0 (другая версия не будет работать, проверено и описано в доке). Попросту говоря это файл jsdk.jar
JSWDK , я использовал версию JSWDK1.0.1 необходимый файл - servlet.jar (я рекомедую servlet-2.0-plus.jar из комплекта GNU JSP)
По желанию можно установить Apache JSSI (Server Side Include), если планируется их использовать (HTML тег ).необходимый файл - ApacheJSSI.jar
GNU JSP 1.0 (Java Server Pages). Необходимые файлы - gnujsp10.jar В поставке так же содержится файл servlet-2.0-plus.jar я бы рекомендовал его использовать вместо JSWDK (пункт 5), хотя разницы в работе я лично не заметил.
Если думается использовать базу данных нужен так же JDBC - драйвер.
Устанавливаем JServ - контейнер сервлетов
Для начала компилим Apache с поддержкой DSO (dynamic shared object). Опция configure --with-shared=max
Или конечно вкомпиливаем модуль прям в Apache (тоже пробовал, работает одинаково хорошо но это все же на пару действий сложнее и кому надо сам разберется тут граблей не замечено).
Следующим шагом устанавливаем JDK 1.2, это просто, но надо не забыть установить переменные окружения (добавить строчки в /etc/bashrc) Например если JDK утановлен в каталоге /opt/jdk
export PATH=.:$PATH:/opt/jdk/jre/bin:/opt/jdk/bin
export JAVA_HOME=/opt/jdk
export CLASSPATH=/opt/jdk/lib/tools.jar
Правильность установки JDK можно проверить запуская примерчики, которые с ним идут - примеры должны работать.
Внимание: Иногда в системе уже установлен JDK и чаще всего он лежит в /bin или в /usr/bin и тем самым раньше по путям. Обычно это JDK версии 1.1.x и нам он не подходит. Его надо снести. Для проверки надо запустить
java -version
И убедится в том что версия JDK действительно 1.2
Затем переходим в каталог где лежат исходники JServ и запускаем
./configure --prefix=/usr/local/jserv --with-apxs=/usr/sbin/apxs --with-jdk-home=/opt/jdk --with-JSDK=/opt/jsdk/lib/jsdk.jar --disable-debugging
Я по SCO - шной привычке ставлю все в /opt но это конечно по вкусу. Затем make и make install
Теперь осталось добавить в файл конфигурации Apache строки для JServ, это лучше сделать включив файл jserv.conf дериктивой Include /ect/httpd/conf/jserv/jserv.conf файла конфигурации httpd.conf
Внимание: Как показала практика если загрузить модуль loadmodule mod_jserv в файле httpd.conf а все остальные конфигурационные директивы для jserv расположить в файле jserv.conf то он их не воспринимает. Я не могу этого объяснить но вывод следующий - грузить модуль loadmodule mod_jserv и конфигурировать его надо в одном файле (или httpd.conf или jserv.conf).
Вот пример моего каталога /etc/httpd/conf (tar - архив). Чтобы настроить Jserv надо лишь скопировать подкаталог /etc/httpd/conf/jserv из этого архива в соответствующее место на сервере и добавить в свой файл httpd.conf строчку
Include /ect/httpd/conf/jserv/jserv.conf
Затем проправить соответствующие пути в файлах jserv.conf , jserv.properties и zone.properties
В файле jserv.properties определяется CLASSPATH для сервлетов строчки типа
wrapper.classpath=/home/httpd/servlets - именно сюда и надо ложить сервлеты которые вы будете использовать
wrapper.classpath=/home/httpd/beans - я предлагаю сделать отдельный каталог для JavaBeans которыми вы будите пользоватся из своих JSP только по одной причине, чтобы не путать их с сервлетами. Не забудте дать права на чтение этих и других каталогов CLASSPATH пользователю от которого работает Apache (обычно nobody).
Можно пускать сервер, но перед этим хочу добавить еще одно замечание - при старте Apache автоматически загружается виртуальная машина JAVA (JVM) ее легко увидеть по команде ps -ef Так вот при остановке сервера Apache она выгружается с задержкой и поэтому при команде /etc/rc.d/init.d/httpd restart не успевает перегрузится и падает. Чтобы этого не происходило необходимо добавить в секцию restart файла /etc/rc.d/init.d/httpd задержку:
........
restart)
$0 stop
sleep 5
$0 start
........
Работоспособность сервера и часть его настроек можно посмотреть зайдя на страничку http://localhost/jserv/
Эта страничка разрешена для просмотра только с той же машины на которой вы стоит Apache (это задано в jserv.conf) поэтому не пытайтесь зайти на нее по сети. После пробы http://localhost/jserv/ можно проверить основную зону сервлетов по умолчанию в ней находится тестовый сервлет http://localhost/servlet/IsItWorking (в каталоге /home/httpd/servlets лежит тестовый сервлет IsItWorking.class) Обратите внимание на две вещи - каталог называется servlets а URL надо набирать servlet и второе - названия сервлетов чувствительны к регистру. Существуют проблемы руссификации сервлетов лучше всего о них написал Вячеслав Педак
Устанавливаем GNU JSP - всего лишь сервлет работающий под JServ но существенно облегчающий работу по написанию и сопровождению сайта.
JavaServerPages представляют собой HTML с встроенными скриптами на JAVA - скриптлетами и имеют несколько преймуществ перед сервлетами:
Позволяют разграничить визуальное оформление (дизайн, HTML-обрамление) от динамического содержания и бизнес - логики.
Не требуют при изменении кода страницы рестарта сервера, как это требуют сервлеты.
Проще для понимания и не требуют знания Servlet API
В сочитании с JavaBeans позволяют удобно работать как с сессиями пользователей так и с глобальными объектами всего приложения.
Но это так лирическое отступление. Чтоб настроить JSP надо просто установить соответствие между расширением файла (обычно .jsp) и сервлетом-обработчиком. Обработчик получает запрос на страницу, генерирует из JSP - страницы Java-код (обычный сервлет), компилирует и исполняет его. Единственное что надо не забыть сделать при конфигурации JSP - указать каталог куда складывать полученные из JSP тексты сервлетов и их откомпилированные в классы файлы. А так же отдать права на запись в этот каталог пользователю откоторого запускается httpd. Этот каталог называют scratchdir в моем примере это /home/httpd/jsps
HTTP Server Apache в исходных кодах ( я работаю на версии Apache1.3.12rusPL29.4)
Apache JServer в любом виде, но лучше конечно в исходниках (я пробовал на версии ApacheJserv1.1.1). необходимые файлы mod_jserv.so и ApacheJServ.jar (или сооответственно исходники этих файлов для последующей компиляции)
JDK 1.2 SE (Java Development Kit 1.2 Standart Edition) для Linux
JSDK обязательно версии 2.0 (другая версия не будет работать, проверено и описано в доке). Попросту говоря это файл jsdk.jar
JSWDK , я использовал версию JSWDK1.0.1 необходимый файл - servlet.jar (я рекомедую servlet-2.0-plus.jar из комплекта GNU JSP)
По желанию можно установить Apache JSSI (Server Side Include), если планируется их использовать (HTML тег
GNU JSP 1.0 (Java Server Pages). Необходимые файлы - gnujsp10.jar В поставке так же содержится файл servlet-2.0-plus.jar я бы рекомендовал его использовать вместо JSWDK (пункт 5), хотя разницы в работе я лично не заметил.
Если думается использовать базу данных нужен так же JDBC - драйвер.
Устанавливаем JServ - контейнер сервлетов
Для начала компилим Apache с поддержкой DSO (dynamic shared object). Опция configure --with-shared=max
Или конечно вкомпиливаем модуль прям в Apache (тоже пробовал, работает одинаково хорошо но это все же на пару действий сложнее и кому надо сам разберется тут граблей не замечено).
Следующим шагом устанавливаем JDK 1.2, это просто, но надо не забыть установить переменные окружения (добавить строчки в /etc/bashrc) Например если JDK утановлен в каталоге /opt/jdk
export PATH=.:$PATH:/opt/jdk/jre/bin:/opt/jdk/bin
export JAVA_HOME=/opt/jdk
export CLASSPATH=/opt/jdk/lib/tools.jar
Правильность установки JDK можно проверить запуская примерчики, которые с ним идут - примеры должны работать.
Внимание: Иногда в системе уже установлен JDK и чаще всего он лежит в /bin или в /usr/bin и тем самым раньше по путям. Обычно это JDK версии 1.1.x и нам он не подходит. Его надо снести. Для проверки надо запустить
java -version
И убедится в том что версия JDK действительно 1.2
Затем переходим в каталог где лежат исходники JServ и запускаем
./configure --prefix=/usr/local/jserv --with-apxs=/usr/sbin/apxs --with-jdk-home=/opt/jdk --with-JSDK=/opt/jsdk/lib/jsdk.jar --disable-debugging
Я по SCO - шной привычке ставлю все в /opt но это конечно по вкусу. Затем make и make install
Теперь осталось добавить в файл конфигурации Apache строки для JServ, это лучше сделать включив файл jserv.conf дериктивой Include /ect/httpd/conf/jserv/jserv.conf файла конфигурации httpd.conf
Внимание: Как показала практика если загрузить модуль loadmodule mod_jserv в файле httpd.conf а все остальные конфигурационные директивы для jserv расположить в файле jserv.conf то он их не воспринимает. Я не могу этого объяснить но вывод следующий - грузить модуль loadmodule mod_jserv и конфигурировать его надо в одном файле (или httpd.conf или jserv.conf).
Вот пример моего каталога /etc/httpd/conf (tar - архив). Чтобы настроить Jserv надо лишь скопировать подкаталог /etc/httpd/conf/jserv из этого архива в соответствующее место на сервере и добавить в свой файл httpd.conf строчку
Include /ect/httpd/conf/jserv/jserv.conf
Затем проправить соответствующие пути в файлах jserv.conf , jserv.properties и zone.properties
В файле jserv.properties определяется CLASSPATH для сервлетов строчки типа
wrapper.classpath=/home/httpd/servlets - именно сюда и надо ложить сервлеты которые вы будете использовать
wrapper.classpath=/home/httpd/beans - я предлагаю сделать отдельный каталог для JavaBeans которыми вы будите пользоватся из своих JSP только по одной причине, чтобы не путать их с сервлетами. Не забудте дать права на чтение этих и других каталогов CLASSPATH пользователю от которого работает Apache (обычно nobody).
Можно пускать сервер, но перед этим хочу добавить еще одно замечание - при старте Apache автоматически загружается виртуальная машина JAVA (JVM) ее легко увидеть по команде ps -ef Так вот при остановке сервера Apache она выгружается с задержкой и поэтому при команде /etc/rc.d/init.d/httpd restart не успевает перегрузится и падает. Чтобы этого не происходило необходимо добавить в секцию restart файла /etc/rc.d/init.d/httpd задержку:
........
restart)
$0 stop
sleep 5
$0 start
........
Работоспособность сервера и часть его настроек можно посмотреть зайдя на страничку http://localhost/jserv/
Эта страничка разрешена для просмотра только с той же машины на которой вы стоит Apache (это задано в jserv.conf) поэтому не пытайтесь зайти на нее по сети. После пробы http://localhost/jserv/ можно проверить основную зону сервлетов по умолчанию в ней находится тестовый сервлет http://localhost/servlet/IsItWorking (в каталоге /home/httpd/servlets лежит тестовый сервлет IsItWorking.class) Обратите внимание на две вещи - каталог называется servlets а URL надо набирать servlet и второе - названия сервлетов чувствительны к регистру. Существуют проблемы руссификации сервлетов лучше всего о них написал Вячеслав Педак
Устанавливаем GNU JSP - всего лишь сервлет работающий под JServ но существенно облегчающий работу по написанию и сопровождению сайта.
JavaServerPages представляют собой HTML с встроенными скриптами на JAVA - скриптлетами и имеют несколько преймуществ перед сервлетами:
Позволяют разграничить визуальное оформление (дизайн, HTML-обрамление) от динамического содержания и бизнес - логики.
Не требуют при изменении кода страницы рестарта сервера, как это требуют сервлеты.
Проще для понимания и не требуют знания Servlet API
В сочитании с JavaBeans позволяют удобно работать как с сессиями пользователей так и с глобальными объектами всего приложения.
Но это так лирическое отступление. Чтоб настроить JSP надо просто установить соответствие между расширением файла (обычно .jsp) и сервлетом-обработчиком. Обработчик получает запрос на страницу, генерирует из JSP - страницы Java-код (обычный сервлет), компилирует и исполняет его. Единственное что надо не забыть сделать при конфигурации JSP - указать каталог куда складывать полученные из JSP тексты сервлетов и их откомпилированные в классы файлы. А так же отдать права на запись в этот каталог пользователю откоторого запускается httpd. Этот каталог называют scratchdir в моем примере это /home/httpd/jsps