如何记录resteasy客户端请求

时间:2015-07-06 07:29:31

标签: logging resteasy interceptor

我需要知道在将消息体发送到客户端之前究竟是什么,以及在处理之前它的响应,所以我尝试使用Interceptors但不幸的是 NOT 正在工作。

        @NameBinding
        public @interface DoIt {}

        @DoIt
        public class MyFilter implements ContainerRequestFilter {...}

        @Path("/root")
        public class MyResource {

           @GET
           @DoIt
           public String get() {...}
        }

我无法使用wireshark来捕获http消息,因为我的服务器只接受Https请求。

我经常搜索并找到很多方法来记录Resteasy,但是大多数都是旧的并且已经弃用了,上面的新方法不起作用。 有谁知道如何解决这个问题?

RestEasy 3.0.9

JBoss EAP 6.3,更新了restEasy到3.0.9

由于

编辑:

我也测试了@Privider的ContainerRequestFilter。

也适用于我的界面

@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding

并将其添加到web.xml

<context-param>
    <param-name>resteasy.providers</param-name>
    <param-value>com.mypackage.RequestMessageLogger</param-value>
</context-param>

仍未调用过滤器。

1 个答案:

答案 0 :(得分:0)

您的ContainerRequestFilter缺少@Provider注释。来自api-docs

  

实现此接口的过滤器必须使用@Provider进行注释,以便JAX-RS运行时发现。

这应该有效:

@DoIt
@Provider
public class MyFilter implements ContainerRequestFilter {...}