Налаштування Tomcat покрокове керівництво
Налаштування Tomcat: покрокове керівництво
Наступний крок після встановлення Tomcat – вибрати базові налаштування. Цей процес розбитий на два етапи, які детально описані у цій статті. Перший - редагування файлів налаштувань XML, другий - вибір відповідних змінних для середовища.
Файли налаштувань XML
Два найважливіших файли налаштувань, щоб запустити Tomcat, називаються .xml і web.xml. За замовчуванням вони розміщені відповідно до TOMCAT-HOME/conf/server.xml і TOMCAT-HOME/conf/web.xml.
Не виконуйте ті самі налаштування двічі. Try Tcat – профілі сервера, які дозволяють зберігати загальні налаштування та застосовувати їх до кількох екземплярів Tomcat в один клік.

- Елементи верхнього рівня (Top Level Elements)
- З'єднувачі або конектори (Connectors)
- Контейнери (Containers)
- Вбудовані компоненти (Nested Components)
- Глобальні налаштування (Global Settings)
На сайті Apache's Tomcat Documentation міститься достатньо інформації, але немає деяких відомостей про налаштування елементів. У цій статті все це висвітлено.
Елементи верхнього рівня
Server (сервер)
Цей елемент визначає окремий сервер Tomcat та містить елементи конфігурації Logger та ContextManager. До того ж, елемент Server підтримує атрибути "port", "shutdown" та "className". Атрибут порт використовується для того, щоб уточнити, через який порт повинні виконуватися команди shutdown (вимкнення). Атрибут shutdown визначає командний рядок для окремого порту, щоб спровокувати відключення. Атрибут className — це реалізація класу Java, яка повинна використовуватися.
Service (сервіс)
Це елемент, який можнапомістити елемент Server; він містить один або кілька компонентів Connector, які мають один загальний компонент Engine. Головна функція цього компонента – задати ці компоненти як один сервіс. Назва сервісу, який з'являтиметься у логах, визначається за допомогою атрибуту “name” (елемент Service).
Connectors (з'єднувачі)
Розміщуючи один або кілька з'єднувачів (connector) у тезі Service, ви дозволяєте системі перенаправити запити з цих портів в один компонент Engine для обробки. Tomcat дозволяє визначити з'єднувачі HTTP та AJP.
HTTP- з'єднувач
Цей елемент представляє HTTP/1.1 Connector та забезпечує Catalina автономним функціоналом веб-сервера. Це означає, що на додаток до виконання сервелатів та JSP-сторінок, Catalina здатний прослуховувати специфічні TCP-порти для запитів. Налаштовуючи HTTP-конектори, звертайте увагу на атрибути "minSpareThreads", "maxThreads" та "acceptCount".
Атрибут "maxThreads" особливо важливий. Він контролює максимальну кількість тредів, які можна створити для керування запитами. Якщо встановлене надто мале значення, запити будуть застрягати в серверному сокеті, що може спровокувати відмову в з'єднанні. Ця проблема усувається під час тестування.
AJP-з'єднувач
Цей елемент є з'єднувачем, який забезпечує зв'язок із протоколом AJP. Головна роль елемента в тому, щоб допомогти Tomcat працювати у зв'язці з Apache.
Контейнери
За допомогою цих елементів Catalina направляє запити до коректного обробного апарату.
Цей елемент представляє певну веб-додаток і містить дані про шлях, яким визначаються запити для відповідних ресурсів програми. Catalina отримуєзапит і намагається зіставити найдовший URI з контекстним шляхом певного елемента Context доти, доки знайдеться коректний елемент, який обслуговував запит.
У елемента Context може бути максимум один вбудований екземпляр на один елемент із допоміжних елементів Loader, Manager, Realm, Resources та WatchedResource.
Хоча Tomcat дозволяє визначати елементи Context у “TOMCAT-HOME/conf/server.xml”, це краще уникати, оскільки ці головні налаштування не можна перезавантажити без перезавантаження Tomcat.
Цей елемент використовується у зв'язку з одним або кількома з'єднувачами, які розміщені в елементі Service. Елемент Engine може використовуватися лише у випадку, якщо він розміщений в елементі Service, і лише один елемент Engine дозволено в елементі Service. Звертайте увагу на атрибут "defaultHost", який задає елемент Host.
Останній відповідає за обслуговування запитів назв хостів на сервері, які не налаштовуються в server.xml. Назва цього атрибута повинна співпадати з назвою одного з елементів Host, які розміщені в елементі Engine. Також важливо вибрати унікальну, логічну назву для кожного з елементів Engine, використовуючи атрибут “name”. Якщо один елемент Server у файлі server.xml містить кілька елементів Service, потрібно вибрати унікальну назву для кожного елемента Engine.
Елемент, який розміщений в елементі Engine, і використовується, щоб зв'язати назву серверної мережі з серверами Catalina . Цей елемент функціонуватиме належним чином лише якщо віртуальний хост був зареєстрований у системі DNS відповідного домену. Одна з найкорисніших особливостей елемента Host — можливість містити елементи Alias, які використовуються для визначення назв.кількох мереж.
Елемент Cluster використовується Tomcat для того, щоб забезпечити реплікацію контекстних атрибутів, використання WAR, реплікацію сесій, і може розміщуватися в елементі Engine або Host. Вони розміщуються елементи Manager, Channel, Valve, Deployer і ClusterListener.
Докладніше про ці елементи та про те, як вони використовуються, можна знайти на сторінці Apache Tomcat Configuration. І хоча цей елемент має безліч різних конфігурацій, стандартної конфігурації буде цілком достатньо, щоб врахувати інтереси більшості користувачів при розробці програми .
Nested Components
Ці елементи розміщуються всередині
елементів container, щоб встановити додаткові функціональні можливості.
Ці елементи можна помістити всередину елементів Server, Engine, Host або Context. Вони вказують на компонент, який справляє певну дію за специфічної події.
Більшість компонентів мають атрибути className, щоб вибрати різні реалізації елемента. Існує ряд додаткових реалізацій Listener, не лише дефолтних. Всі ці реалізації вимагають, щоб елемент Listener розміщувався у певному елементі Server.
І дуже важливо налаштувати цей атрибут коректно. Доступні на даний момент реалізації містяться в APR Lifecycle Listener, Jasper Listener, Server Lifecyle Listener, Global Resources Lifecyle Listener, JMX Remote Lifecycle Listener та JRE Memory Leak Prevention Listener.
Global Naming Resources
Цей елемент використовується для визначення ресурсів Java Naming and Directory Interface для специфічного Server, відмінного від будь-яких контекстів веб-програми JNDI. Якщо потрібно, ви можете задати характеристики JNDI resource lookup для та в даному елементі,визначивши їх і зв'язавши за допомогою.
Результати цього методу еквівалентні додавання елементів у файл програми “/WEB-INF/web.xml”. Якщо ви використовуєте цю техніку, перевірте, чи ви визначили додаткові параметри, які необхідні, щоб встановити та налаштувати об'єкт-фабрику та властивості.
Цей елемент розміщується в будь-якому елементі Container і задає базу даних, що містить імена користувачів, паролі та ролі для Container. При розміщенні всередині елемента Host або Engine характеристики, задані в елементі Realm, передаються всім контейнерам нижнього рівня за умовчанням.
Важливо коректно встановити атрибут “className” цього елемента, оскільки є безліч реалізацій. Ці реалізації використовуються, щоб зробити Catalina доступним іншим системам управління безпекою користувачів (наприклад, JDBC , JNDI або DataSource).
Цей елемент має лише одне призначення — направити Catalina у статичні ресурси, які використовуються вашими веб-додатками. Ці ресурси включають класи, HTML та JSP файли. Використання цього елемента надає Catalina доступ до файлів, що містяться в інших місцях, крім файлової системи (filesystem), таких як ресурси, які містяться в архівах WAR або базах даних JDBC.
Важливо пам'ятати, що ця техніка надання веб-додатків доступу до ресурсів, що містяться поза файловою системою, може використовуватися тільки, якщо програма не вимагає безпосереднього доступу до ресурсів, що зберігаються у файловій системі.
Компоненти Valve розміщуються всередині елементів Engine, Host та Context, за допомогою яких додаються спеціальні функціональні можливості в конвеєр, що обробляє запити. Це дуже різносторонній елемент. Існує безліч різних типів елементів Valve - відавтентифікаторів до фільтрів та виправлень помилок WebDAV. Багато з цих типів Valve розміщуються лише усередині спеціальних елементів.
Файл web.xml містить інформацію, яка використовується для конфігурації компонентів ваших веб-застосунків. Задаючи конфігурацію Tomcat вперше, ви можете встановити servlet-mapping для центральних компонентів, таких як JSP. У Tomcat цей файл функціонує так, як описано в специфікації Servlet.
Єдина відмінність у тому, як Tomcat обробляє цей файл: є опція встановити за допомогою TOMCAT-HOME/conf/web.xml значення за промовчанням для всіх контекстів. Якщо використовується такий метод, базовою конфігурацією буде TOMCAT-HOME/conf/web.xml, який може переписати специфічні для програми WEB-INF/web.xml файли.
Інші важливі конфігураційні файли
Є й інші файли. Список ролей, користувачів та паролів, які UserDatabaseRealm використовує для автентифікації, можна знайти в tomcat-users.xml. Якщо потрібний доступ до інших адміністративних інструментів, які є у Tomcat, ви можете відредагувати файл і додати доступ адміністратора та менеджера.
Стандартні параметри контексту установки Tomcat можуть бути змінені у файлі context.xml. Файл catalina.policy, який замінює файл java.policy (з вибраним JDK), містить параметри дозволу для елементів Tomcat. Ви можете редагувати цей файл вручну або за допомогою policytool.
Змінні середовища
Якщо Tomcat налаштовується вперше, потрібно змінити кілька змінних середовища, щоб вони відповідали вашим вимогам.
За допомогою цієї змінної змінюється розмір heap size of the JVM. Встановити відповідні значення для цієї змінної дуже важливо при розміщеннінового додатка, якому може знадобитися певний розмір динамічної пам'яті коректної роботи. Підібравши відповідні значення для цих налаштувань, ви зможете зменшити кількість повідомлень OOME.
CATALINA_HOME
Ця змінна задає місце встановлення Tomcat. Скрипти автозапуску в Tomcat намагатимуться визначити значення цієї змінної, але краще просто встановити коректне значення, щоб уникнути складнощів.
CATALINA_OPTS
Змінна, яка використовується для встановлення різних специфічних опцій у Tomcat.