2017-01-19 21 views
0

Есть ли библиотека с открытым исходным кодом или онлайн-сервис, которые могли бы автоматически генерировать спецификацию wsdl на основе IDL?Есть ли способ конвертировать сложный IDL в спецификацию wsdl?

Цель состоит в том, чтобы построить API-интерфейс фасада в верхней части существующего API-интерфейса trift, который позволил бы связываться с другими системами через протокол SOAP.

+1

По крайней мере, не OOTB [намеренно, я думаю] (http://grokbase.com/t/thrift/user/09atkr5sfr/wsdl-generation-in-thrift): «* Thrift не генерирует файлы WSDL или не реализует SOAP Это, безусловно, можно было бы расширить, но большинство людей предпочитают использовать Трэйфт в качестве альтернативы таким системам, а не как дополняющие друг друга. * ", но вы, вероятно, уже это выяснили. Интересно, почему кто-то готов пойти на эту дорогу? SOAP медленный и раздутый. – JensG

+0

Да, медленно и вздор. Говорят, что все еще швейцарский нож API нашей системы поддерживает SOAP, поскольку он предназначен для интеграции с существующими системами динозавров, которые все еще существуют здесь и там. BTW, конвертируя TRLID IDL в обычную Java с [fb swift] (https://github.com/facebook/swift) и занимая [ось apache] (https: //axis.apache.org/axis2/java/core /), тогда выглядит многообещающим. –

+1

Прохладный, спасибо за понимание. Подумайте, перефразируйте свой вопрос, ответьте на него и даже примите его. Поэтому, если вы найдете что-то подходящее: почему бы не рассказать миру? ;-) - К сожалению, мы также должны поддерживать SOAP, но наш подход немного отличается. Мы генерируем WSDL и IDL из третьего источника, используя инструмент homegrown. Не идеально, но работает Good Enough ™ – JensG

ответ

0

Есть несколько готовых к использованию инструментов, которые позволяют конвертировать Трифт IDL в WSDL. Остальная часть ответа предполагает, что мы живем в мире Java с JDK и Maven под рукой и доступным интернет-соединением.


Первый: Swift Code Generator Tool. Как это ReadME состояния, один должен:

  1. скачать последнюю версию:

    mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=central::default::http://repo1.maven.apache.org/maven2 -Dartifact=com.facebook.swift:swift-generator-cli:RELEASE:jar:standalone -Ddest=/tmp/ 
    
  2. запустить загруженный баночку в каталоге, содержащем бережливость файлы:

    java -jar /tmp/swift-generator-cli-0.23.1-standalone.jar -use_java_namespace -out ../java *.thrift 
    

предполагая стандарт

- src 
    - main 
    - java 
    - thrift 

Maven проект макет. Генератор Swift Code генерирует интерфейс Java для каждой записи Thrift service. Каждый исходный файл Бережливость должен объявить «яву» пространство имен, например:

namespace java com.acme 

Сгенерированного интерфейс будет включать в себя вложенное Async интерфейса для асинхронного вызова. Удалите Async subinterface. Автоматизация удаления Async остается в качестве упражнения для читателя.


Compile генерируется Java-файлы с JAVAC или ваш любимый инструмент для сборки (Ant, Maven, Gradle и т.д.). Не забудьте включить com.facebook.swift:swift-annotations:0.23.1 в качестве зависимости от компиляции.


Наконец использовать Apache Axis2' java2wsdl утилиты доступные в Axis2 binary distribution, как это:

/tmp/axis2-1.7.4/bin/java2wsdl.sh -cn com.acme.TargetService -cp build/classes/main 

для генерации WSDL для записи Бережливость service TargetService {...}.