получение http запроса информации из потока - PullRequest
0 голосов
/ 21 декабря 2011

возможно ли получить информацию http-запроса из потока (не из текущего потока)?

Я хочу иметь возможность перечислять все живые потоки и получать URI запроса для каждого из них.

есть идеи?

спасибо

1 Ответ

0 голосов
/ 21 декабря 2011

Попробуйте:

  1. Создайте Фильтр сервлета .
  2. Заставить его реализовать DynamicMBean .Зарегистрируйте компонент в методе фильтра init (и отмените его регистрацию в методе destroy )
  3. Определите синхронизированный WeakHashMap field.
  4. В методе фильтра doFilter захватите URI запроса перед FilterChain s doFilter метод вызывается.Вставьте поток и URI запроса в WeakHashMap.
  5. Вызовите цепочку.
  6. В блоке finally вставьте текущий поток и некоторую произвольную константу, например NO REQUEST , вWeakHashMap.
  7. Реализуйте DynamicMBean, чтобы MBeanInfo представлял один MBeanAttributeInfo на поток в WeakHashMap.Сделайте имена атрибутов именами потоков и введите URI (или String ).
  8. Реализуйте DynamicMBean, чтобы getAttribute метод возвращает URI потока, который соответствует запрошенному имени атрибута.
  9. Настройте фильтр так, чтобы он вызывался для всех диапазонов URI, которые вы хотите отслеживать.

Когда выпросмотрев атрибуты MBean, вы увидите URI (или NO REQUEST ) для каждого потока, который все еще активен в JVM, обработавшей хотя бы один запрос.Когда поток завершается (и, возможно, после нескольких циклов GC), запись WeakHashMap будет удалена.

Теперь, когда я ее читаю, это выглядит немного утомительно, но это должно быть довольно просто.

// Николай

...