Невозможно загрузить wsdl с помощью инструмента с графическим интерфейсом с помощью весенней загрузки

Я новичок как в SOAP, так и в технологиях весенней загрузки. Однако я создал мыльный веб-сервис, используя ссылку ниже. https://spring.io/guides/gs/producing-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 опубликовано.

1 ответ

Это ошибка, которая возникает, когда вы не используете правильный URL-адрес в мыльном интерфейсе. Вам нужно найти правильное местоположение вашего XSD в браузере и убедиться, что вы можете получить к нему доступ.

Затем вам нужно проверить URL-адрес, который вы вставляете в пользовательский интерфейс SOAP, и посмотреть, являются ли относительные 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());
Другие вопросы по тегам