2015-07-06 151 views
0

我需要知道REST邮件正文在发送给客户端之前究竟是什么以及它在处理前的响应,所以我尝试使用Interceptors,但不幸的是它是不是正在工作。如何记录resteasy客户端请求

 @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> 

仍然过滤器不叫。

+0

哪个应用服务器您使用的? – lefloh

+0

你确定这个更新确实有效吗? – lefloh

+0

是的,我的请求被发送,我完全收到回复。我需要日志来处理一个不起作用的复杂请求,并且我认为我的请求缺少一些东西。 – Reza

回答

0

您的ContainerRequestFilter缺少@Provider注释。从api-docs:实现此接口

过滤器必须与@Provider来注释由JAX-RS运行时被发现。

这应该工作:

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

我也测试@Provider,仍然无法正常工作。 – Reza

+0

“不工作”是什么意思?过滤器未被调用?你在做什么过滤器?您是否尝试过不使用'@ DoIt'注释? – lefloh

+0

过滤器函数根本不被调用,在过滤器内部我有一个测试打印日志。 – Reza