【发布时间】:2017-04-05 19:59:08
【问题描述】:
我有一个使用 SpringWS 的 Spring Boot 应用程序。在 WsConfigurerAdapter 内部,我重写 addInterceptors 以添加日志记录/身份验证/验证/等。
@Configuration
@EnableCaching
@EnableWs
public class WebServiceConfig extends WsConfigurerAdapter {
...
@Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
EnvironmentSettings environment = getEnvironmentSettings();
interceptors.add(getLogSetupInterceptor());
interceptors.add(getAuthenticationInterceptor());
interceptors.add(getServerLoggingInterceptor());
interceptors.add(getAuthorizationInterceptor());
ServerPayloadValidatingInterceptor validatingInterceptor = new ServerPayloadValidatingInterceptor();
validatingInterceptor.setValidateRequest(environment.isValidateSoapRequest());
validatingInterceptor.setValidateResponse(environment.isValidateSoapResponse());
validatingInterceptor.setXsdSchema( xsdSchema());
interceptors.add(validatingInterceptor);
}
}
奇怪的是,当在本地运行时,所有这些拦截器都被添加并为每个请求运行就好了。但是,当我将应用程序作为 .war 部署到 WAS 时,这种方法没有运行。我什至添加了日志语句,我可以说是这个方法被跳过了,而不是拦截器本身。有人知道我不知道的关于 spring boot .war 文件的信息吗?
另外,这是我的应用程序类:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
【问题讨论】: