全部
我正在尝试使用下面粘贴的代码为基于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);
}
}
答案 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");
}
}```