1
我有使用SpringWS的Spring Boot应用程序。在WsConfigurerAdapter的内部,我重写addInterceptors以添加日志记录/认证/验证/等。未在Websphere应用程序服务器中调用Spring引导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);
}
}