Jersey ContainerRequest.getEntity在ContainerResponseFilter的筛选器方法中为空

Jersey ContainerRequest.getEntity在ContainerResponseFilter的筛选器方法中为空,jersey,Jersey,我正在创建自己的日志过滤器,实现ContainerRequestFilter和ContainerResponseFilter。我只想在响应失败时打印请求实体,例如,响应状态代码为404500 但当我执行request.getEntity()或request.getEntityInputStream()时,会得到空字符串 在ContainerResponseFilter()的筛选方法中 看起来jersey在资源级别读取内容后会将其删除 它需要从输入流中读取实体,而输入流是不可重置的(所涉及的基础设

我正在创建自己的日志过滤器,实现
ContainerRequestFilter
ContainerResponseFilter
。我只想在响应失败时打印请求实体,例如,响应状态代码为404500

但当我执行request.getEntity()或request.getEntityInputStream()时,会得到空字符串 在ContainerResponseFilter()的筛选方法中


看起来jersey在资源级别读取内容后会将其删除

它需要从输入流中读取实体,而输入流是不可重置的(所涉及的基础设施不保留实体的副本)。因此,由于之前读取了输入流,因此在实现
ContainerResponseFilter
的类中调用
request.getEntityInputStream()
时,输入流应该是空的。为你工作。但是正如您所提到的,如果您想要自定义它,那么您需要编写一个类似于该实现的实现,当然还需要添加代码来自定义日志记录。

它需要从输入流中读取实体,而输入流是不可重设的(所涉及的基础结构不保留它的副本)。因此,由于之前读取了输入流,因此在实现
ContainerResponseFilter
的类中调用
request.getEntityInputStream()
时,输入流应该是空的。为你工作。但正如您所提到的,如果您想要定制它,那么您需要编写一个类似于该实现的实现,当然还需要添加代码来定制日志记录