У меня есть приложение, которое я хотел бы автоматически проверять сообщения, которые были получены и отправлены. Я приложил PayloadValidatingInterceptor
и установить схему, я хотел бы его использовать:PayloadValidatingInterceptor не стреляет для @Endpoint?
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {
@Autowired
private ApplicationContext ctx;
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
// modifies the wsdl to serve the correct locations
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/*");
}
@Bean
protected PayloadValidatingInterceptor getValidatingInterceptor() {
PayloadValidatingInterceptor validatingInterceptor = new PayloadValidatingInterceptor();
validatingInterceptor.setSchema(getResource("classpath:CARetriever.xsd"));
validatingInterceptor.setValidateRequest(true);
validatingInterceptor.setValidateResponse(true);
return validatingInterceptor;
}
private Resource getResource(String resource) {
return ctx.getResource(resource);
}
}
я могу видеть, что перехватчик становится загружен
2016-01-21 14:22:08 INFO org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor,164 - Validating using class path resource [CARetriever.xsd]
Однако, когда я бросаю недопустимое сообщение SOAP против это, я получаю NullPointerException
, а не подтверждение. Таким образом, моя конфигурация или ожидания ошибочны. Может кто-нибудь указать на что?
Пожалуйста, делите StackTrace для этого 'NPE'. С другой стороны, я не вижу 'addInterceptors (List перехватчики)' реализация для добавления вашего 'PayloadValidatingInterceptor' к сопоставлению конечных точек ... –
Я не получаю stacktrace - ошибка возвращается в ответ на ошибку мыла , Что касается 'addInterceptors' - когда я пытался добавить его с помощью этого метода, он больше не появлялся в журналах. –
Плохо. Любая неисправность возникает на сервере. Вы должны отладить свой сервис, чтобы выяснить, кто виноват в этом NPE. Число рейнольдса 'addInterceptors()' - Я не знаю, как это должно работать ... Это ваше приложение, и мы можем только рекомендовать и исправить некоторые очевидные проблемы. Все остальные ваши пожелания зависят от вас. –