在我们的项目中,我们使用的是Spring Web服务。配置文件如下:
@EnableWs
@Configuration
public class WebServiceConfiguration extends WsConfigurerAdapter {
@Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
PayloadValidatingInterceptor validatingInterceptor = new PayloadValidatingInterceptor();
validatingInterceptor.setValidateRequest(true);
validatingInterceptor.setValidateResponse(true);
validatingInterceptor.setXsdSchema(customerSchema());
interceptors.add(validatingInterceptor);
}
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/abc/ws/*");
}
@Bean(name = "someInterface")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema priceListSchema) {
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("SomePortType");
wsdl11Definition.setLocationUri("/abc/ws/someInterface");
wsdl11Definition.setTargetNamespace("someNamespace");
wsdl11Definition.setSchema(priceListSchema);
return wsdl11Definition;
}
@Bean
public XsdSchema customerSchema() {
return new SimpleXsdSchema(new ClassPathResource("SomeXsd.xsd"));
}
}
WSDL的XSD文件是我们保存在类路径中的soxsd.xsd whixh。但是我想知道我是否有将暴露的WSDL文件,而不是以这种方式生成WSDL。我们如何暴露已经存在的WSDL?
您是否尝试删除以下
@Bean(name = "someInterface")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema priceListSchema) {
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("SomePortType");
wsdl11Definition.setLocationUri("/abc/ws/someInterface");
wsdl11Definition.setTargetNamespace("someNamespace");
wsdl11Definition.setSchema(priceListSchema);
return wsdl11Definition;
}
并添加此
@Bean
public WsdlDefinition myWsdl() {
return new SimpleWsdl11Definition(new ClassPathResource("/myWsdl.wsdl"));
}
您仍然需要XSD来验证器。您可能还需要更多配置