при вызове контейнера дескриптор развертывания (web.xml)

Мы знаем, что всякий раз, когда приходит запрос на сервлет, контейнер сервлета сначала проверяет файл web.xml на предмет URL-адреса и соответствующих классов сервлета. Это нормально, но после этого возникает путаница. Предположим, я использую свойство load-on-startup. Итак, сервлет должен быть готов до того, как поступит первый вызов. В этом случае контейнеру потребуется объект конфигурации сервлета, чтобы сервлет заработал. Но снова загрузка при запуске и параметр инициализации для сервлета определены в файле web.xml. Итак, когда именно контейнер использует web.xml? (Когда используется свойство load-on-startup, контейнер не может явно ждать первого вызова, снова контейнер должен читать файл web.xml, чтобы узнать, используется ли это свойство с каким-либо сервлетом.)

Будет лучше, если кто-нибудь сможет прояснить мое замешательство. Пожалуйста, предоставьте также надежную ссылку, если это возможно.


person user2392631    schedule 25.09.2013    source источник


Ответы (2)


Загрузка и создание:

Контейнер сервлетов отвечает за загрузку и создание экземпляров сервлетов. Загрузка и создание экземпляра могут происходить при запуске контейнера или задерживаться до тех пор, пока контейнер не определит, что сервлет необходим для обслуживания запроса.

Когда механизм сервлетов запущен, необходимые классы сервлетов должны быть расположены в контейнере сервлетов. Контейнер сервлета загружает класс сервлета, используя обычные средства загрузки классов Java. Загрузка может происходить из локальной файловой системы, удаленной файловой системы или других сетевых служб. И поскольку сервлеты объявлены в web.xml, этот файл загружается и читается контейнером во время запуска контейнера.

Инициализация:

После создания экземпляра объекта сервлета контейнер должен инициализировать сервлет, прежде чем он сможет обрабатывать запросы от клиентов. Контейнер инициализирует экземпляр сервлета, вызывая метод init интерфейса сервлета с уникальным (для каждого объявления сервлета) объектом, реализующим интерфейс ServletConfig.

Ссылка: JSR-000315 JavaTM Servlet 3.0

person Debojit Saikia    schedule 25.09.2013

web.xml читается, как только вы развертываете приложение на веб-сервере. Для понимания вы можете предположить, что контейнер - это не что иное, как ваш веб-сервер. Хотя веб-сервер имеет больше, чем просто веб-контейнер.

Веб-сервер читает web.xml и загружает конфигурацию контекста, загрузку при запуске сервелтов и т. Д. web.xml - это файл, с помощью которого вы сообщаете своему контейнеру / серверу о своем приложении. Ваше веб-приложение находится внутри веб-сервера, и сервер перехватывает все входящие запросы, решает, в какое приложение следует направить запрос, в зависимости от контекста.

person Juned Ahsan    schedule 25.09.2013
comment
Контейнер не обязательно должен быть веб-сервером. Обычно ваш веб-сервер сервлета поставляется вместе с контейнером. Но контейнер может поставляться и отдельно. - person user2392631; 25.09.2013
comment
@ user2392631 Верно, что веб-контейнер является частью веб-сервера, но, честно говоря, это создает большую путаницу, когда кто-то новый пытается его отличить. Поэтому я старался не усложнять, но все же внесу правку. - person Juned Ahsan; 25.09.2013