我正在尝试在Payara 162上调试我的球衣2应用程序,但在每次请求时,在打印跟踪信息后我得到此异常并且客户端没有得到响应:
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)
在我的球衣我app我配置了跟踪:
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中启用了记录器(我已将Payara配置为使用logback),当我通过向我的X-Jersey-Tracing-Accept
标头添加{i}}标头时,我在服务器日志中看到完整的跟踪信息请求,但后来我得到了例外。当我没有在请求中添加标题时,一切正常,但当然我没有得到跟踪。
我想知道是否有什么我可以改变来解决这个问题还是一个错误?
答案 0 :(得分:1)
问题是跟踪会为每个事件添加header into the REST response。
Grizzly对响应中的标头数量施加了限制。
默认情况下,Payara Server在响应中将100定义为maximum number of headers
。您需要增加此数字以允许响应中的所有跟踪信息。
要为最大标头数设置更高的数字,您需要使用asadmin。没有选项在GUI管理控制台中设置它,在屏幕上缺少配置HTTP协议。
如果您的配置名为server-config
且网络侦听器为http-listener-1
,请执行以下asadmin命令将其设置为1000:
的asadmin>组 configs.config.server-config.network-config.protocols.protocol.http侦听器1.http.max响应报头= 1000
您可以使用类似的命令来设置所有Grizzly network listener propertiesoptions,只需将max-response-headers
替换为您要设置的选项的名称,使用-
作为单词分隔符而不是驼峰案例