Мне нужно выполнить предварительную и последующую обработку всех входящих запросов на веб-сервер.Функциональность - это и ограничение доступа на уровне URL, и языковой перевод, но также и другие особые случаи, которые необходимо обрабатывать глобально.
Как правило, это может быть достигнуто с помощью фильтров сервлетов, но когда число веб-приложений растет, становится желательным несвязывать фильтры с каждым приложением, поскольку при внесении изменений в фильтр все приложения необходимо перестраивать и повторно развертывать.
Вместо этого я хотел бы установить фильтры глобально на сервере, и я нашел два возможныхрешения которых я не удовлетворяю ни одним из них.
На Tomcat можно развернуть общесерверные фильтры в каталоге "lib" и настроить сервер web.xml насопоставить их с входящими запросами.Проблема, которую я вижу, заключается в том, что любые зависимости фильтра также должны быть развернуты глобально в каталоге lib.Из того, что я понимаю, это может привести к сложному решению конфликтов зависимостей с установленными приложениями.( Загружает ли Tomcat один и тот же файл библиотеки в память дважды, если они находятся в двух веб-приложениях? )
Развертывание фильтров в простом веб-приложении, которое в основном действует какпрокси по крайней мере связывает фильтры с соответствующими зависимостями.Затем это приложение можно развернуть на сервере и принять все входящие запросы, прежде чем пересылать их целевому приложению с помощью параметра конфигурации crossContext.( RequestDispatcher пересылка между экземплярами Tomcat ) Однако для этого необходимо изменить URL-адреса, чтобы все ссылки указывали на «прокси».
Похоже, ни одно из этих решенийбыть удовлетворительнымОни оба зависят от платформы, поскольку полагаются на Tomcat.Похоже, что они оба имеют возможные проблемы и требуют особой обработки зависимостей.
Какова оптимальная практика при использовании функций сервера?