【发布时间】:2017-09-20 19:41:23
【问题描述】:
我有一个包含多个 XSD 架构的 Spring Boot 项目(我正在使用 Spring-WS)。
如果我使用 Spring 的 PayloadValidatingInterceptor 来验证请求和响应,它只适用于最新设置的架构。
例如:
public void addInterceptors(List<EndpointInterceptor> interceptors) {
PayloadValidatingInterceptor validatingInterceptor = new PayloadValidatingInterceptor();
validatingInterceptor.setValidateRequest(true);
validatingInterceptor.setValidateResponse(true);
validatingInterceptor.setXsdSchema(getFirstSchema());
validatingInterceptor.setXsdSchema(getSecondSchema());
interceptors.add(validatingInterceptor);
super.addInterceptors(interceptors);
}
这个 sn-p 将使 Spring 仅验证第二个模式,而不是第一个。我尝试创建多个 PayloadValidatingInterceptor 以使用 super.addInterceptors(interceptors); 添加它们,但它也不起作用。我能找到的唯一响应(使用 Java 而不是 XML)是从 2009 年开始的:
https://jira.spring.io/browse/SWS-481
是否有人知道基于 Java 的解决方案来验证来自同一项目中多个 XSD 的请求和响应?
【问题讨论】:
-
您是否尝试过使用 setXsdSchemaCollection 而不是 setXsdSchema?如果是,那么出了什么问题?如果没有,那为什么不呢?
-
我试过了,还是不行。我也找不到使用 setXsdSchema 的实现示例。该方法要求您实现 XsdSchema[] getXsdSchemas() 和 XmlValidator createValidator(),但我不知道如何实现 createValidator() 方法。简单地返回 null 会使应用程序无法使用,并且无法实例化 XmlValidtor。
标签: java spring-boot xsd wsdl spring-ws