Сопряжение приложения гибридного / веб-клиента с существующими удаленными веб-службами, описанными набором WSDL - PullRequest
0 голосов
/ 28 января 2020

Коротко о проблеме

Мне нужно интегрировать мобильное гибридное приложение, которое, вероятно, будет основано на Ioni c и должно будет (косвенно) потреблять некоторое количество SOAP веб-сервисы. Мне бы хотелось, чтобы клиент Typescript мобильного приложения знал о bean-компонентах, определяемых файлами XSD и WSDL, описывающими веб-службы.

Некоторые дополнительные пояснения

В В следующих пояснениях я буду ссылаться на следующие объекты в решении:

  • клиент Typescript мобильного приложения [A]
  • приложение Java на стороне сервера, выделенное для мобильных устройств [B]
  • удаленные SOAP веб-службы, которые предоставляют бизнес-функции [C]

Действуют следующие ограничения:

  • клиент мобильного приложения [A] будет связываться через вызовы REST с выделенным приложением на стороне сервера [B]
  • , выделенное приложение на стороне сервера [B] будет разработано в Java, выделенное приложение на стороне сервера [B] будет позаботиться о потреблении существующих веб-сервисов [C], следовательно, выступая в качестве слоя интеграции между клиентом приложения Typescript [A] и SOAP веб-сервисами [C]
  • SOAP веб-сервисами [C] описывается рядом файлов WSDL, поддерживаемых некоторыми файлами XSD, бэкэнд-команда не желает переписывать свою документацию на что-либо, кроме WSDL и XSD

Допустим, некоторые запросы и ответы используемые веб-сервисами [C] включают следующий Java объект

public class MyElement {
    private ElementColor color;
}

, где ElementColor - это перечисление Java, например

public enum ElementColor {
    RED,
    GREEN,
    BLUE,
}

Эти объекты Java определены в файлах WSDL и XSD, следовательно, мы можем создать файл JAR, импортировать его в приложение на стороне сервера [B], и поэтому наше приложение на стороне сервера [B] будет знать о возможных значениях, которые имеет свойство «color» можно предположить в классе MyElement. Все хорошо.

Моя проблема в том, что мобильный клиент Typescript [A] не импортирует файл JAR (очевидно), следовательно, когда разработчику на стороне клиента придется написать запрос или проанализировать ответ, который включает в себя MyElement объект он либо

  • будет обрабатывать поле "color" как строку (но затем он может записать в него любое значение, а не только действительные "RED", "GREEN" и "BLUE" значения)
  • определяют перечисление Typescript, имитирующее перечисление ElementColor Java.

Второй вариант более чистый, но все же не сильно привязанный к фактическим моделям, определенным в WSDL и XSD файлы, т. е. разработчик на стороне клиента все еще может добавить значение «ЖЕЛТЫЙ» в свое перечисление Typescript и отправить его в бэкэнд.

Я хотел бы автоматически импортировать / наследовать в моем коде Typescript на основе моделей определяется файлами WSDL и XSD или отображениями Typescript классов Java, сгенерированных из тех же файлов WSDL и XSD. Помните, что этого недостаточно для извлечения Мы работаем с этими объектами во время выполнения (я мог бы написать сервис, который их создает), потому что разработчик на стороне клиента все равно не сможет их увидеть при разработке.

Заранее благодарю за помощь.

1 Ответ

0 голосов
/ 21 марта 2020

На сегодняшний день лучший подход, который я нашел для решения этой проблемы, - это использовать что-то вроде генератора текстового плагина , который преобразует Java классы в классы Typescript.

Я уже имел место Maven pom, использующий плагин cxf codegen для того, чтобы превратить файлы WSDL и XSD в код Java, мне просто нужно было добавить в процесс выполнение плагина генератора текстов, чтобы файлы Java по очереди конвертировались в файлы Typescript. Затем я могу импортировать файлы определений Typescript в проект моего гибридного приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...