gpt4 book ai didi

java - 当我们有超过 1 个 url 时如何对传入请求进行 xsd 验证

转载 作者:行者123 更新时间:2023-11-30 06:06:29 26 4
gpt4 key购买 nike

我正在开发 SpringBoot SOAP WS 项目,我必须对传入请求进行 xsd 验证,我有 3 个 WSDL(意味着 3 个要验证的 URL),但不幸的是,我能够做一个。在下面的代码 addInterceptors() 中添加了 hotelDirectUpdateSchema(),与此类似,我还有 2 个 xsd。如何处理 3 个请求验证?

@EnableWs
@Configuration
public class WSConfiguration extends WsConfigurerAdapter {
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/service/*");
}
@Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
PayloadValidatingInterceptor validatingInterceptor = new PayloadValidatingInterceptor();
validatingInterceptor.setValidateRequest(true);
validatingInterceptor.setValidateResponse(true);
validatingInterceptor.setXsdSchema(hotelDirectUpdateSchema());
interceptors.add(validatingInterceptor);
}
}

最佳答案

我能够修复它,下面是解决方案

 @Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
HotelDirectUpdateRQValidator validatingInterceptor = new HotelDirectUpdateRQValidator();
validatingInterceptor.setValidateRequest(true);
validatingInterceptor.setValidateResponse(false);
validatingInterceptor.setXsdSchemaCollection(new XsdSchemaCollection() {
@Override
public XsdSchema[] getXsdSchemas() {
return null;
}

@Override
public XmlValidator createValidator() {
try {
return XmlValidatorFactory.createValidator(getSchemas(), "http://www.w3.org/2001/XMLSchema");
} catch (Exception e) {
LOGGER.error("Failed to create validator e={}", e);
}
return null;
}

public Resource[] getSchemas() {
return new Resource[]{
new ClassPathResource("/schemas/OTA/OTA_HotelRateAmountNotifAndHotelAvailNotifRQValidate.xsd"),
new ClassPathResource("/schemas/HotelDirectUpdateRQ.xsd")
};
}
});

interceptors.add(validatingInterceptor);
}

关于java - 当我们有超过 1 个 url 时如何对传入请求进行 xsd 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com