将Jersey ContainerRequest和ContainerResponse数据日志一起推送到数据存储

时间:2013-01-03 08:17:35

标签: logging filter jersey

我们目前正在使用Jersey OAuth过滤器。要求是我们需要将ContainerRequestContainerResponse数据报(以及任何例外,如果适用)一起推送到第三方数据存储,该数据存储提供异步工作的push API。我读过关于ContainerRequestFiltersContainerResponseFilters接口以及LoggingFilter(使用Logger来写数据)。我想将两个push调用分别发送请求和响应数据报,而不是将它组合成一个调用。我看到ContainerResponseFilters同时使用ContainerRequestContainerResponse,因此实现该接口以将这些数据推送到一起是可行和良好的。即使OAuth过滤器抛出其他一些异常,它也能工作吗?还有其他更好的选择吗?

提前致谢。

1 个答案:

答案 0 :(得分:-1)

为了别人而回答,

AFAIK,由于ContainerRequestFilters实施处理ContainerRequest并且读取输入流和ContainerResponseFilters实施处理ContainerResponse,因此没有直接将请求和响应数据放在一起的简单方法{1}}对象。仍然可以在filter实现的ContainerResponseFilters方法中访问请求标头,但不能访问实体。我不得不使用属性映射(似乎是可变的)作为临时映射来放置请求实体并在响应过滤器中检索它。它看起来像一个肮脏的黑客,但我没有找到任何其他方式。