2016-09-09 6 views
1

Я пытаюсь отлаживать приложение джерси 2 на скумбриевидном гидролике 162, но при каждом запросе, после печатается информация трассировки я получаю это исключение, и клиент не получает никакого ответа:Включение Джерси ведения журнала трассировка вызывает MaxHeaderCountExceededException

org.glassfish.grizzly.http.util.MimeHeaders$MaxHeaderCountExceededException: Illegal attempt to exceed the configured maximum number of headers: 100 
at org.glassfish.grizzly.http.util.MimeHeaders.createHeader(MimeHeaders.java:396) 
at org.glassfish.grizzly.http.util.MimeHeaders.addValue(MimeHeaders.java:422) 
at org.glassfish.grizzly.http.HttpHeader.addHeader(HttpHeader.java:707) 
at org.glassfish.grizzly.http.server.Response.addHeader(Response.java:1177) 
at org.apache.catalina.connector.Response.addHeader(Response.java:1221) 
at org.apache.catalina.connector.ResponseFacade.addHeader(ResponseFacade.java:579) 
at org.glassfish.jersey.servlet.internal.ResponseWriter.writeResponseStatusAndHeaders(ResponseWriter.java:165) 
at org.glassfish.jersey.server.ServerRuntime$Responder$1.getOutputStream(ServerRuntime.java:701) 
at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:200) 
at org.glassfish.jersey.message.internal.CommittingOutputStream.flushBuffer(CommittingOutputStream.java:305) 
at org.glassfish.jersey.message.internal.CommittingOutputStream.commit(CommittingOutputStream.java:261) 
at org.glassfish.jersey.message.internal.CommittingOutputStream.close(CommittingOutputStream.java:276) 
at org.glassfish.jersey.message.internal.OutboundMessageContext.close(OutboundMessageContext.java:839) 
at org.glassfish.jersey.server.ContainerResponse.close(ContainerResponse.java:412) 
at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:784) 
at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444) 
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434) 
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329) 

в моем Джерси я приложение, которое я настроен след, как так:

public class RestApplication extends ResourceConfig { 

public RestApplication() { 
    super(); 
    packages(true, "com.example"); 
    register(JacksonFeature.class); 
    register(JsonProvider.class); 
    register(RolesAllowedDynamicFeature.class); 

    property("jersey.config.server.tracing.type", "ON_DEMAND"); 
    property("jersey.config.server.tracing.threshold", "VERBOSE"); 
} 

}

Я включил регистратор в моем logback.xml (я настроил скумбриевидный гидролик использовать Logback), и я вижу полную информацию о трассировке в своем журнале сервера, когда я включаю ее по запросу, добавляя заголовок X-Jersey-Tracing-Accept к моему запросу, но затем получаю исключение. Когда я не добавляю заголовок в запрос, все работает, но, конечно, я не получаю след.

Мне интересно, есть ли что-нибудь, что я могу изменить, чтобы исправить это или это ошибка?

ответ

1

Проблема заключается в том, что трассировка добавляет header into the REST response для каждого события.

Grizzly налагает ограничение на количество заголовков в ответе. Сервер Payara по умолчанию определяет 100 как maximum number of headers в ответе. Вам нужно увеличить это число, чтобы разрешить всю информацию трассировки в ответе.

Чтобы установить большее число для максимального количества заголовков, вам необходимо использовать asadmin. Невозможно установить это в консоли администратора GUI, на экране отсутствует настройка HTTP-протокола.

Если конфигурация называется server-config и сетевой слушатель http-listener-1, а затем выполнить следующую команду asadmin, чтобы установить его на 1000:

asadmin> набор configs.config.server-config.network-конфигурации .protocols.protocol.http-слушатель-1.http.max-ответ-заголовки = 1000

вы можете использовать аналогичную команду, чтобы установить все Grizzly network listener propertiesoptions, просто замените max-response-headers на имя опции вы хотите установить , используя - в качестве разделителя слов вместо случая верблюда.

+0

спасибо @OndrejM, я попробую, хотя я уверен, что количество заголовков в отдельных фигурах, поэтому добавление еще 1 не приблизит его к 100. –

+0

да, это сработало! Я неправильно понял ваш ответ, я думал, вы имели в виду, что добавили бы один заголовок в ответ, но он добавляет 1 заголовок «за событие», который на самом деле много и много дополнительных заголовков, поэтому он перевалил за 100. Спасибо! –

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