Доступ к внутренним компонентам Tomcat из сервлета (или фильтра)

Я хотел бы получить доступ к внутренним данным Tomcat из сервлета (или фильтра). В частности, я хотел бы прочитать информацию о загруженных потоках из диспетчера пула потоков. Итак, мой вопрос: возможно ли это вообще (я могу представить, что это могло быть заблокировано по соображениям безопасности)? Если это возможно, может быть, кто-нибудь может дать мне совет, с чего начать (какой-нибудь синглтон точки входа и т. Д.)?

Я знаю, что могу получить эту информацию через JMX. Но я бы предпочел прямой API (потому что JMX, вероятно, довольно тяжелый, не так ли?).


person oo_olo_oo    schedule 08.09.2009    source источник
comment
Я не могу прямо ответить на этот вопрос, но хочу высказать кое-что, над чем можно подумать. Использование инфраструктуры JMX сделает ваше приложение более независимым от платформы, тогда как прямой вызов API свяжет ваше приложение с Tomcat. Вопрос о том, является ли это проблемой, является дизайнерским решением, но стоит задуматься.   -  person Jay    schedule 08.09.2009


Ответы (3)


Будет ли ServerFactory # getServer () помочь? Он обеспечивает доступ к экземпляру Tomcat Server, на котором работает сервлет / фильтр. Оттуда вы можете покопаться, чтобы найти нужную информацию /

Чтобы ответить на ваш вопрос о том, что JMX «тяжелый»: вероятно, нет. Если вы просто выполняете периодический мониторинг данных, все должно быть в порядке, особенно если вы получаете доступ к mbeans внутри той же виртуальной машины через платформу MBeanServer.

person Kevin    schedule 08.09.2009
comment
Спасибо за совет относительно ServerFactory. Это действительно кажется хорошей отправной точкой. Постараюсь исследовать этот путь. Что касается JMX: я хотел бы отслеживать использование пула потоков для каждого запроса, чтобы применить некоторый адаптационный алгоритм к обработке. Итак, я подозревал, что JMX занимает слишком много места. Но если попытка ServerFactory не удалась, я также проверю эту возможность. - person oo_olo_oo; 09.09.2009

Чего именно вы пытаетесь достичь? Лямбда-зонд - отличный инструмент для мониторинга Tomcat, который может иметь то, что вы ищете .

person sigget    schedule 08.09.2009
comment
Спасибо, но я хотел бы отслеживать использование пула потоков для каждого запроса, чтобы применить некоторый адаптационный алгоритм к обработке. Итак, мне нужно сделать это в моем сервлете (или фильтре). - person oo_olo_oo; 09.09.2009

После тестирования различных подходов я в конце концов решил использовать JMX. Накладные расходы оказались менее значительными, чем я ожидал.

person oo_olo_oo    schedule 05.11.2009