0

我对 SOAP 和 Spring Boot 技术都很陌生。但是我使用下面的参考链接创建了肥皂网络服务。 https://spring.io/guides/gs/produce-web-service/

  @EnableWs
    @Configuration
    public class WebServiceConfig extends WsConfigurerAdapter {
        @Bean
        public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
            MessageDispatcherServlet servlet = new MessageDispatcherServlet();
            servlet.setApplicationContext(applicationContext);
            servlet.setTransformWsdlLocations(true);
            return new ServletRegistrationBean(servlet, "/ws/*");
        }

        @Bean(name = "REL-6-MM7-1-4")
        @Primary
        public DefaultWsdl11Definition defaultWsdl11Definition() {
            DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
            wsdl11Definition.setPortTypeName("MMSPort");
            wsdl11Definition.setLocationUri("/ws");
            wsdl11Definition.setTargetNamespace("http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-6-MM7-1-4");
            wsdl11Definition.setSchemaCollection(getXsdCollection());
            return wsdl11Definition;
        }

        @Bean
        public XsdSchemaCollection getXsdCollection() {
            return new XsdSchemaCollection() {

                public XsdSchema[] getXsdSchemas() {
                    return new XsdSchema[]{new SimpleXsdSchema(new ClassPathResource("REL-6-MM7-1-4.xsd")), new SimpleXsdSchema(new ClassPathResource("SoapEnvelope.xsd"))};
                }

                public XmlValidator createValidator() {
                    throw new UnsupportedOperationException();
                }
            };
        }

请找xsd贴。

4

1 回答 1

0

这是当您没有在soap ui 中使用正确的url 时发生的错误。您需要在浏览器中搜索 XSD 的正确位置并确保您可以访问它。

然后,您需要检查粘贴到 SOAP UI 中的 URL,并查看相对 URL 是否确实正确。如果不是,您必须使用正确的位置。

编辑: 在您的情况下,我看到以下代码:

@Bean(name = "REL-6-MM7-1-4")

所以我认为你的 ws 暴露在: http://localhost:8080/ws/REL-6-MM7-1-4.wsdl

编辑 2: 在您的情况下,您还需要提供多个 xsd。您可以通过添加来做到这一点:

@Bean
public XsdSchemaCollection getXsdCollection() {
    return new XsdSchemaCollection() {

        public XsdSchema[] getXsdSchemas() {
            return new XsdSchema[]{new SimpleXsdSchema(new ClassPathResource("REL-6-MM7-1-4.xsd")), new SimpleXsdSchema(new ClassPathResource("SoapEnvelope.xsd"))};
        }

        public XmlValidator createValidator() {
            throw new UnsupportedOperationException();
        }
    };
}

并在以下位置使用它:

wsdl11Definition.setSchema(getXsdCollection());
于 2017-06-26T07:38:57.997 回答