Ich versuche, meinen Jersey 2 App auf Payara 162 zu debuggen, aber bei jeder Anfrage, nachdem die Trace-Informationen gedruckt werden, bekomme ich diese Ausnahme und der Kunde erhält keine Antwort:Aktivieren Jersey Trace-Logging verursacht 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)
in meinem Trikot I I trace konfiguriert App als so:
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");
}
}
ich den Logger in meinem logback.xml aktiviert ist (ich habe Payara konfiguriert logback verwenden), und ich sehe die vollständigen Ablaufverfolgungsinformationen in meinem Serverprotokoll, wenn ich es bei Bedarf aktiviere, indem ich den Header X-Jersey-Tracing-Accept
zu meiner Anfrage hinzufüge, aber dann bekomme ich die Ausnahme. Wenn ich den Header nicht zur Anfrage hinzufüge, funktioniert alles, aber natürlich bekomme ich den Trace nicht.
Ich frage mich, ob es etwas gibt, das ich ändern kann, um das zu beheben, oder ist es ein Fehler?
danke @OndrejM, ich werde es versuchen, obwohl ich ziemlich sicher bin die Anzahl der Header ist in einzelnen Zahlen, so Hinzufügen von 1 mehr würde es nicht nahe an 100 bringen. –
ja, es hat funktioniert! Ich habe deine Antwort missverstanden, ich dachte, du meintest, dass es einen Header zur Antwort hinzufügen würde, aber es fügt einen Header "pro Event" hinzu, der in der Tat viele und viele zusätzliche Header enthält, deshalb ging es über 100. Danke! –