自定义拦截器未注册

时间:2020-03-12 21:46:15

标签: spring-boot

全部

我正在尝试使用下面粘贴的代码为基于SOAP的Web服务注册自定义拦截器。

在我的日志中,我看不到任何证据表明正在调用这些类中的任何一个。

对于任何关于如何解决此问题的想法,我将不胜感激。

谢谢, snappersdad

public class InquiryServiceInterceptor extends HandlerInterceptorAdapter {

     private static Logger rollingFileLogger = LogManager.getLogger(InquiryServiceInterceptor.class);

     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

         rollingFileLogger.debug("Entered preHandle");

         return true;
     }

     @Override
     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

         rollingFileLogger.debug("Entered postHandle");
     }

     @Override
     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) throws Exception {

         rollingFileLogger.debug("Entered afterCompletion");

     }

}

@Component
public class InquiryServiceInterceptorAppConfig extends WebMvcConfigurerAdapter {

    private static Logger rollingFileLogger = LogManager.getLogger(InquiryServiceInterceptorAppConfig.class);

    @Autowired
    InquiryServiceInterceptor inquiryServiceInterceptor;

     @Override
     public void addInterceptors(InterceptorRegistry registry) {

         rollingFileLogger.debug("Adding interceptor 'inquiryServiceInterceptor'...");

         registry.addInterceptor(inquiryServiceInterceptor);

     }

}


1 个答案:

答案 0 :(得分:0)

最后,找到了解决方案!

1)将以下内容添加到spring-ws-servlet.xml文件

<!-- Intercept all requests -->
<sws:interceptors>
    <bean class="xxx.xxxxxxx.xxx.xxx.InquiryServiceInterceptor"/>
</sws:interceptors>

请参阅:https://docs.spring.io/autorepo/docs/spring-ws/2.2.0.RELEASE/reference/htmlsingle/ 5.5.2拦截请求-EndpointInterceptor接口以获取更多详细信息

2)删除尝试通过Java类添加拦截器的方法(请参见上文),InquiryServiceInterceptorAppConfig扩展了WebMvcConfigurerAdapter

3)更新拦截器类。请查看新版本(注意:实现EndpointInterceptor)

public class InquiryServiceInterceptor implements EndpointInterceptor  {

     private static Logger rollingFileLogger = LogManager.getLogger(InquiryServiceInterceptor.class);


     @Override
    public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception {

         rollingFileLogger.debug("Entered handleRequest");

         return true;
    }

    @Override
    public boolean handleResponse(MessageContext messageContext, Object endpoint) throws Exception {

        rollingFileLogger.debug("Entered handleResponse");

        return false;
    }

    @Override
    public boolean handleFault(MessageContext messageContext, Object endpoint) throws Exception {

        rollingFileLogger.debug("Entered handleFault");

        return false;
    }

    @Override
    public void afterCompletion(MessageContext messageContext, Object endpoint, Exception ex) throws Exception {

        rollingFileLogger.debug("Entered afterCompletion");

    }

}```