Как узнать общее количество запросов, обработанных сервером tomcat? - PullRequest
4 голосов
/ 17 января 2012

Я хочу разместить сервер tomcat, на котором будут размещены 3 веб-приложения.Я хочу получить общее количество запросов, обработанных моим сервером (для любого из 3 веб-приложений).Есть ли журнал, из которого я могу проверить общее количество запросов, обработанных моим сервером (включая запросы HTTP 404)

Примечание: я могу рассчитать общее количество запросов, обработанных каждым отдельным приложением, и получить общее количествочисло запросов, обработанных моим сервером, но приложения, развернутые в tomcat, являются сторонними, и я не могу внести в них какие-либо изменения.

В основном я создаю приложение для мониторинга сервера tomcat, и ядолжен предоставить общее количество запросов, обслуживаемых приложением,

Кроме того, моей первой мыслью было переопределить конструктор класса HTTPServletRequest в servlet-api.jar и установить статический счетчик.так как каждый запрос сопоставляется с объектом HTTPServletRequest, я думаю, что он будет делать эту работу.Но стоит ли переопределять запрос HTTPServletRequest или есть какое-либо существующее решение для этого?

Ответы [ 2 ]

1 голос
/ 17 января 2012

Для этой цели можно использовать специальный фильтр Запросить фильтр демпфера .

Согласно официальной документации Tomcat:

The following entries in a web application's web.xml would enable the Request Dumper 
filter for all requests for that web application. If the entries were added to 
CATALINA_BASE/conf/web.xml, the Request Dumper Filter would be enabled for all web 
applications.
1 голос
/ 17 января 2012

Если вы решите переопределить класс HTTPServletRequest, не просто добавьте статический счетчик, это приведет к тому, что ваш счетчик будет сбрасываться сам при каждом отключении сервера / перезагрузке jvm.

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

Все это предполагает, что еще нет расширения Apache, которое уже дозирует это, и вы хотитевозиться с классом HTTPServletRequest.

...