Spring: как сгенерировать WSDL во время выполнения, если XSD предоставлен в качестве входных данных

Мне нужно создать симулятор, в котором файлы WSDL во время выполнения могут быть сгенерированы, если файл XSD указан в качестве входных данных. Для этого я использую Spring Web Services и JAXB API для создания WSDL из заданного файла XSD.

После всех примеров программ я понял, что классы java могут быть сгенерированы с помощью JAXB при запуске файла maven, но все же нам нужно вручную написать класс serviceEndpoint, поэтому кажется сложным сгенерировать класс ServiceEndpoint для данного файла xsd.

Я хочу знать, можно ли создать класс serviceEndpoint для данного xsd во время выполнения и также скомпилировать.

Короче говоря, я хочу автоматизировать весь процесс генерации WSDL, если XSD-файл указан в качестве входных данных во время выполнения.


person user3403462    schedule 24.06.2015    source источник
comment
Прежде всего, WSDL используется для описания веб-службы. т.е. когда вы создаете WDSL, вы должны определить операции и тип транспорта, используемого для связи веб-сервиса. XSD - это файл схемы, используемый для определения сообщений, используемых в качестве ввода / вывода для операции веб-службы. как можно определить поведение вашей службы и режим связи из файла XSD? Опять же, JAXB - это способ синтаксического анализа XML-документа, а не генерации java-классов. Поправьте меня, если я неправильно понял.   -  person Renjith    schedule 25.06.2015


Ответы (2)


Spring автоматически предоставляет WSDL, созданный на основе вашей конфигурации. См. Раздел 5.3.1.1 в официальной документации.

person Samantha Catania    schedule 03.08.2015

Убедитесь, что вы используете ServletRegistrationBean с определенным сопоставлением URL-адресов и т. Д., Например:

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

Если ваша XSD-схема называется test.xsd, вы можете получить доступ к WSDL во время выполнения здесь: http://localhost:8080/ws/test.wsdl

person zygimantus    schedule 11.09.2017