spring-boot - 自定义拦截器未注册
问题描述
全部,
我正在尝试使用我在下面粘贴的代码为基于 SOAP 的 Web 服务注册一个自定义拦截器。
在我的日志中,我没有看到任何调用这些类的证据。
我将不胜感激任何人对如何解决此问题的任何想法。
谢谢,鲷鱼爸爸
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) 将以下内容添加到 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 extends 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");
}
}```
推荐阅读
- sql-server - 每次更新 IIS 托管的 .net 核心应用程序后,与 SQL 服务器的连接失败
- protocol-buffers - grpc/protobuffer 请求特定字段
- python - 从 wine 编译时出现 Cx_Freeze 错误
- flutter - 如何防止底片消失颤动
- c++ - 有没有办法用复合键和复合值创建一个 STL 映射?
- ios - 有没有办法通过 telprompt URL 方案从 iOS 应用程序进行隐藏调用?
- postman - Clockify Api - 获取过去 24 小时内每个用户的小时数
- eclipse-scout - 如何从 Scout 客户端代码访问请求 HttpSession?
- typescript - 条件类型中的 boolean[] 扩展为 true[] | 错误的[]
- android - 用于搜索查询的 Android 分页