2017-01-09 6 views
0

У меня есть класс, который реализует ContainerRequestFilter и ContainerResponseFilter. Я использую этот класс для регистрации запроса и соответствующего ответа на него. Я отмечаю start_time в фильтре запроса и распространяю его на фильтр ответов, используя MDC.put («время начала», начало_time). Я вижу, что, поскольку фильтр ответов принимает ContainerRequestContext в качестве аргумента, он может отображать ответ на правильный запрос.Различать несколько запросов в Джерси. Фильтр запросов

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

+1

Можете ли вы вставить образец кода, чтобы лучше понять вопрос? У вас есть настраиваемый фильтр регистрации? –

+0

Да, я написал собственный фильтр регистрации. Я использовал следующий учебник для написания одного [ссылка] http://www.makeinjava.com/custom-logging-filter-using-jersey-containerrequestfilter-containerresponsefilter/ – raizsh

ответ

0

Выполняет ли каждый запрос другой экземпляр класса фильтра регистрации?

Нет. Так что попытка сохранить состояние участника не является вариантом. Что нужно сделать, так это использовать команду ContainerRequestContext для установки свойства на стороне запроса. На стороне ответа просто получите свойство из того же контекста.

// request filter 
filter(ContainerRequestContext request) { 
    request.setProperty("key", value); 
} 

// response filter 
filter(ContainerRequestContext request, ContainerResponseContext response) { 
    Object value = request.getProperty("key"); 
} 

Каждый запрос получит свое собственное Container(Request|Response)Context.

+0

Я спрашиваю, как RequestFilter различает несколько запросов которые приходят в одно и то же время. Как выполняется фильтр запросов? Как несколько запросов обрабатываются фильтром, так что два контекста запроса не смешиваются. Я могу установить время запуска с использованием MDC, и он отлично работает. Я также знаю, что мы можем установить свойство запроса для сохранения состояния. – raizsh

+0

Джерси создает новый контекст для каждого запроса и передает контекст фильтру. Что еще нужно знать? –

 Смежные вопросы

  • Нет связанных вопросов^_^