繁体   English   中英

Apache CXF中的LoggingInInterceptor

[英]LoggingInInterceptor in Apache CXF

我必须在拦截器级别编写一个CustomLogger,并且我指的是Apache CXF中的LoggingInInterceptor代码。 我在代码中看到,它首先是从消息中获取输入流,然后再将其设置回消息中。

请参考以下代码和url:

// restore the delegating input stream or the input stream 
   if (is instanceof DelegatingInputStream) { 
        ((DelegatingInputStream)is).setInputStream(bis); 
   } else { 
        **message.setContent(InputStream.class, bis);** 
   }

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.cxf/cxf-api/2.7.4/org/apache/cxf/interceptor/LoggingInInterceptor.java#152

即使我们在这里不更改输入流,也可以让我知道为什么这样做的原因。 如果给出相同的详细描述,将非常有帮助。

输入流实际上已更改。 日志记录将“消耗”其字节,然后将流设置为结束。 这使得它不能用于后续的消息处理程序。 因此,拦截器首先复制字节以将其保留在内存中,然后在新的输入流中使用它们,并为后续的拦截器提供另一个新的输入流的访问权限(这对于实际的http输入流是不可能的,但对于内存中的字节而言)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM