Фильтры сервлетов и потоки? - PullRequest
0 голосов
/ 15 октября 2010

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

1) Имеет ли фильтр, или я могу заставить фильтр делать запись в отдельном потоке?если да, то как?

2) есть ли способ динамического включения или выключения фильтра без необходимости повторного развертывания кода.

Спасибо

Ответы [ 2 ]

5 голосов
/ 15 октября 2010
  1. Фильтр выполняется потоком, назначенным вашему запросу. Вы можете создать FutureTask для ведения журналов, если хотите, но в Filter нет ничего, что позволяло бы вам делать такие вещи. Если вы используете Log4J, вы можете войти в очередь и выгрузить приложение таким образом.
  2. Фильтры добавляются в web.xml, поэтому вы не можете их отключить или включить. Если внутри есть компонент JMX, который выполняет эту работу, возможно, вы можете использовать консоль JMX, чтобы выключить и включить его функцию.

Возможно, вы виновны в преждевременной оптимизации. Если у вас возникнут проблемы с регистрацией или фильтрацией, я подожду, пока у меня появятся доказательства, чтобы доказать это, прежде чем я начну переделывать, чтобы это исправить.

0 голосов
/ 15 октября 2010

Многие программы для ведения журналов поддерживают «асинхронную регистрацию», при которой событие журнала очень быстро помещается в очередь, а затем отдельный поток записывает их в постоянное хранилище, как только может. Недостатком здесь является то, что вы с большей вероятностью потеряете сообщения, если ваше приложение аварийно завершится, когда события все еще находятся в очереди. Общие накладные расходы также немного выше, поскольку у вас есть несколько потоков, координирующих друг друга.

Кроме того, многие каркасы журналирования имеют опцию «смотреть конфигурацию», которая периодически проверяет файл конфигурации. Это позволяет вам включить или отключить регистратор в «горячей» системе.

Какую библиотеку журналов вы используете?

...