使用HandlerInterceptorAdapter记录REST / SOAP服务

时间:2017-01-12 16:18:55

标签: java spring logging

我正在尝试实现HandlerInterceptorAdapter以便能够将请求/响应捕获为前/后处理器。由于某种原因,调用不会通过我的拦截器。有多个例子,但在我的案例中我找不到问题。现在我想在它进入实际服务并记录一些数据之前捕获请求。

注意:我没有任何渲染视图。

拦截班:

public class ESignLoggingInterceptor extends HandlerInterceptorAdapter {

  private static final String CLASS_NAME = ESignLoggingInterceptor.class.getSimpleName();

  @SuppressWarnings("unused")
  @Override
  public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception {
      String url = null;
      if( request != null ) {
          url = request.getRequestURL().toString();
      }
      return true;
  }

}

spring.xml

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/rest"/>
        <bean class="com.mercuryinsurance.esignature.common.logging.ESignLoggingInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/soap"/>
        <bean class="com.mercuryinsurance.esignature.common.logging.ESignLoggingInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

1 个答案:

答案 0 :(得分:0)

我知道解决这个问题的两种方法,我也遇到过。

第一个就像你在尝试一样。请检查:

  1. 更改
  2. <mvc:mapping path="/soap"/><mvc:mapping path="/soap/**"/>
    <mvc:mapping path="/rest"/><mvc:mapping path="/rest/**"/>

    1. 同时检查是否声明了al架构。如果您确实没有声明它,那么您应该收到错误。
    2. xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"

      第二个

      1. 声明你的拦截器如下

        @Bean public MappedInterceptor myInterceptor() { return new MappedInterceptor(null, new MyLoggingInterceptor()); }

      2. 编辑:将@Component添加到您的班级