Java Jersey 2.x在尝试使用SpringBoot记录非GET请求时抛出NegativeArraySizeException

Java Jersey 2.x在尝试使用SpringBoot记录非GET请求时抛出NegativeArraySizeException,java,spring-boot,jersey-2.0,log4j2,Java,Spring Boot,Jersey 2.0,Log4j2,由于Jersey 2.x在最新版本中不推荐使用LoggingFilter,我们继续使用Jersey自己的请求/响应日志以及log4j2。我们正在使用springboot。当我们使用POST方法访问web服务时,问题出现了,它抛出NegativeArraySizeException java.lang.NegativeArraySizeException at org.glassfish.jersey.logging.LoggingInterceptor.logInboundEntity(

由于Jersey 2.x在最新版本中不推荐使用LoggingFilter,我们继续使用Jersey自己的请求/响应日志以及log4j2。我们正在使用springboot。当我们使用POST方法访问web服务时,问题出现了,它抛出NegativeArraySizeException

java.lang.NegativeArraySizeException
    at org.glassfish.jersey.logging.LoggingInterceptor.logInboundEntity(LoggingInterceptor.java:210) ~[jersey-common-2.23.2.jar:?]
    at org.glassfish.jersey.logging.ServerLoggingFilter.filter(ServerLoggingFilter.java:108) ~[jersey-common-2.23.2.jar:?]
    at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:132) ~[jersey-server-2.23.2.jar:?]
    at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:68) ~[jersey-server-2.23.2.jar:?]
我的log4j2配置-

<!-- Jersey logger -->
<AsyncLogger name="org.glassfish" level="all" additivity="false">
    <AppenderRef ref="Console" level="off" />
    <AppenderRef ref="RollingFileIO" level="all" />
</AsyncLogger>

如果我将log level设置为
关闭
,则一切正常。 SpringBoot版本
1.4.3


为了安全起见,我可以在Wireshark中看到传入的数据

我得到了答案。为了让jersey写日志,我们注册了这个-

     jerseyConfig.register(
        new LoggingFeature(          
          java.util.logging.Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME),
          java.util.logging.Level.SEVERE, 
          LoggingFeature.Verbosity.PAYLOAD_ANY, 
          Integer.MAX_VALUE)
       );
这里,第四个参数是
maxEntitySize
,它是Integer.MAX\u值。因此,在创建日志缓冲区时,jersey正在使用引起异常的
maxEntity+1
初始化数组

我把这个值改成了一个更低的/合乎逻辑的数字,一切正常