J'ai une application que je voudrais valider automatiquement les messages qui sont reçus et envoyés. J'ai joint le PayloadValidatingInterceptor
et définir le schéma que je voudrais à utiliser:PayloadValidatingInterceptor ne se déclenche pas pour @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);
}
}
Je peux voir que l'intercepteur est obtenir chargé
2016-01-21 14:22:08 INFO org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor,164 - Validating using class path resource [CARetriever.xsd]
Cependant, quand je jette un message SOAP inopposable Je reçois un NullPointerException
plutôt qu'un message de validation. Donc, soit ma configuration ou mes attentes sont fausses. Quelqu'un peut-il pointer vers quoi?
Veuillez partager le StackTrace pour ce 'NPE'. De l'autre côté, je ne vois pas l'implémentation de 'addInterceptors (List) pour ajouter votre' PayloadValidatingInterceptor' au mappage de noeud final ... –
Je n'obtiens pas de pile - l'erreur est renvoyée dans une réponse de panne de savon . En ce qui concerne le 'addInterceptors' - lorsque j'ai essayé de l'ajouter avec cette méthode, il n'apparaissait plus dans les journaux. –
C'est mauvais. Toute faute est un problème sur le serveur. Vous devez déboguer votre service pour déterminer qui est coupable dans NPE. Ré. 'addInterceptors()' - Je ne les connais pas comment cela devrait fonctionner ... C'est votre application et nous ne pouvons que recommander et résoudre certains problèmes évidents. Tous vos autres souhaits sont à vous. –