Сервери програм

Apache Tomcat - opensource-проект, який реалізує специфікацію контейнера сервлетів та специфікацію JavaServer Pages (JSP). Використовується як самостійний сервер веб-додатків, як сервер контенту у зв'язці з веб-сервером Apache, а також як контейнер сервлетів у серверах додатків JBoss та GlassFish. У лабораторній роботі передбачається встановлення та налаштування Tomcat як сервер веб-додатків під керуванням ОС OpenSuSE 12.2.

Мета роботи:Встановити та зробити базове налаштування Apache Tomcat як сервер веб-додатків.

Завдання до роботи

Установка Java та Tomcat

1. Встановлення Java Development Kit (JDK)

Для роботи Tomcat потрібно встановлене оточення для розробки Java-програм (Java Development Kit, JDK). Перевірити, яка версія встановлена ​​в системі можна, наприклад, так:

У наведеному прикладі в системі встановлена ​​(символi(nstalled)) версія 1.7 OpenJDK - вільного комплекту розробки, повністю сумісного із Sun (Oracle) JDK.

Якщо жоден з доступних пакетів не встановлено, його слід установити:

Перевірити результати встановлення можна так, як було зазначено вище.

Дізнатися шлях, де розміщується середовище виконання Java, можна зі змінної оточення $JAVA_HOME:

А дізнатися номер встановленої (і використовуваної) версії JDK можна так:

2. Встановлення Tomcat

Установка Tomcat та пов'язаних з ним пакетів з репозитарію проводиться звичайним чином:

Після підтвердження, необхідні пакети будуть завантажені та встановлені. При цьому, в системі будуть створені наступні підкаталоги (дефолтне встановлення в OpenSuSE 12.2, фактичне розміщення залежить від дистрибутива та версії ОС таверсії самого Tomcat):

  • /usr/share/tomcat/bin: керуючі скрипти;
  • /etc/tomcat/conf: конфігураційні файли (server.xml, web.xml, context.xml, tomcat-users.xml);
  • /usr/share/java/tomcat/lib: jar-файли, що використовуються всіма розширеннями Tomcat та веб-додатками;
  • /var/log/tomcat: log-файли;
  • /srv/tomcat/webapps: каталог, що містить веб-додатки (сервлети та JSP);
  • /var/cache/tomcat/work: робочий каталог Tomcat, який використовується, в першу чергу, для перетворення JSP-сторінок на сервлети;
  • /var/cache/tomcat/temp: тимчасові файли.

У каталозі /usr/share/tomcat будуть також розміщені симлінки на зазначені каталоги. Шлях до основного каталогу Tomcat можна записати в змінну оточення $CATALINA_HOME ( export CATALINA_HOME='/usr/share/tomcat/' ).

3. Запуск та зупинення сервера

Якщо установка пройшла успішно, можна спробувати запустити Tomcat:

Скрипт catalina.sh використовується для ручного запуску та зупинення сервера Tomcat. Для автоматичного запуску можна використовувати скрипт service (service tomcat startstoprestart), попередньо слід вказати рівні запуску, на яких стартуватиме демон tomcat (див. chkconfig)

Catalina - назва компонента Tomcat, що реалізує безпосередньо функції контейнера сервлетів. Ця назва використовувалася у ранніх версіях (до Tomcat5) для всього продукту. Іншими компонентами у складі системи є Coyote, який здійснює підтримку транспорту за протоколом HTTP 1.1 та Jasper, призначений для обробки JSP (аналізу JSP-файлів та компіляції їх у Java-код, який потім передається для обробки за допомогою Catalina).

можна

Мал. 1. Дефолтна стартова сторінка сервера ApacheTomcat

Зупинити Tomcat, запущений вручну, можна так:

Налаштування сервера Tomcat

Для налаштування сервера Tomcat використовуються наступні конфігураційні файли XML, розміщені в каталозі $CATALINA_HOME/conf/:

  • server.xml: Загальні налаштування сервера (порти, віртуальні хости та ін.).
  • web.xml: Параметри, загальні для ВСІХ веб-застосунків на поточному сервері. Налаштування окремих веб-застосунків задаються у власних файлах /WEB-INF/web.xml (тут можна провести аналогію з використанням файлу .htaccess в Apache).
  • context.xml: Загальні параметри керування контентом.
  • tomcat-users.xml: Список користувачів та груп (ролей).

conf/server.xml - Зміна номера порту

За замовчуванням Tomcat використовує для вхідних підключень TCP-порт 8080, а також порти 8009 та 8005:

Ці порти можуть бути змінені на інші, які не використовуються іншими мережевими сервісами, шляхом їх зміни у файлі conf/server.xml. Щоб, наприклад, змусити Tomcat працювати на порту 8081, потрібно знайти у файлі conf/server.xml вказаний нижче рядок і змінити значення атрибута port на потрібне (8081), потім перезапустити сервер:

conf/web.xml - Включення лістингу каталогів

Для встановлення відображення списку файлів у каталогах (лістингу), потрібно змінити значення атрибуту listings з помилкового (false) на справжнє (true) у блоці налаштувань сервлета за умовчанням ("default"-servlet) у файлі conf/web.xml. Це буває корисним при розробці та налагодженні веб-застосунків, але не рекомендується використовувати на production-сервері з міркувань безпеки.

conf/context.xml - Встановлення автоматичного перезавантаження сторінок

Є можливість змусити Tomcat виконувати автоматичне перезавантаження після зміникоду. Потрібно додати атрибут reloadable зі значенням "true" елемент файлу conf/context.xml. Це дуже корисно в процесі розробки та налагодження сервлетів, але знову ж таки не рекомендується в готовому продукті.

conf/tomcat-users.xml - Управління користувачами та ролями

Для керування користувачами, які можуть керувати сервером Tomcat, призначено файл conf/tomcat-users.xml. Щоб створити, наприклад, користувача manager, який зможе керувати веб-додатками через графічну оболонку (визначена роль manager-gui), потрібно додати до цього файлу запис виду:

Розробка та розповсюдження веб-додатків під керуванням Tomcat

Розглянемо кілька прикладів використання Tomcat для розробки веб-застосунків на Java. Тут ми не акцентуватимемо увагу на кодах програм як такі, оскільки цьому присвячена окрема дисципліна — «Об'єктно-орієнтоване програмування мовою Java».

Створення структури каталогів та розміщення веб-сторінок

Усі веб-програми розміщуються в каталозі webapps (/srv/tomcat/webapps). Кожна програма розміщується у власному, однойменному каталозі з певною вкладеною структурою (webapps/youappname/WEB-INF/classes). Для нової веб-програми (наприклад, myapp) цю структуру можна створити, наприклад, так:

Призначення створених каталогів таке:

  • myapp: Кореневий каталог веб-програми. Тут розміщуються HTML-сторінки та інші ресурси (таблиці стилів (CSS), зображення, скрипти клієнтів (javascript), JSP тощо), доступні веб-клієнтам.
  • myapp/WEB-INF: Цей каталог, недоступний веб-користувачам, містить опис веб-застосунку та його параметри у файлі web.xml.
  • myapp/WEB-INF/classes: У цьому каталозі розміщуються всі файли Java-класівсервлетів.

Помістимо в кореневий каталог створюваного веб-додатку файл index.html такого змісту:

conf

Мал. 2. Відображення статичних сторінок

Java Server Pages

Java Server Pages (JSP) - динамічні веб-сторінки, що містять, крім HTML-розмітки, інструкції на мові Java (подібно до PHP або ASP). Такі ресурси розміщуються та використовуються так само, як і статичні ресурси. Приклад JSP наведено у лістингу 1, а результат на рис. 3.

Лістинг 1. Приклад розмітки JSP

можна

Мал. 3. Висновок JSP-сторінок

Примітка: Якщо під час звернення до JSP-сторінки ви отримуєте повідомлення про помилку виду: org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder. , це швидше за все означає, що каталог tomcat/work недоступний для запису. Використовуйте команду chmod -R a+w tomcat/work для встановлення дозволів або chown для зміни власника.

Усі сервлети (серверні програми Java) розміщуються в підкаталозі WEB-INF/classes/. Розглянемо використання сервлетів з прикладу програми, який виводить деяку інформацію про сервері (листинг 1).

Лістинг 1. Вихідний код Java-сервлету

Наступний етап – компіляція. Це можна зробити з того середовища розробки, яке ви використовуєте (Eclipse, NetBeans, IntelliJ тощо) або командного рядка. У разі використання openJDK і Tomcat 7 це буде виглядати приблизно так:

В результаті компіляції в каталозі WEB-INF/classes буде створено файл MyServlet.class. Тепер потрібно налаштувати Tomcat для використання.

Налаштування доступу до сервлета

Щоб зміни набули чинності, потрібно перезапустити сервер. Результат виконання сервлета наведено на рис. 4.