有没有办法将thrift IDL转换为wsdl规范?

时间:2017-01-19 11:33:36

标签: wsdl thrift

是否有任何开源库或在线服务可以自动生成基于节俭IDL的wsdl规范?

目标是在现有的thrift API之上构建facade API,允许通过SOAP协议与ansient系统耦合。

1 个答案:

答案 0 :(得分:0)

有一些准备使用的工具可以将Thrift IDL转换为WSDL。答案的其余部分假设我们生活在Java世界中,手头有JDK和Maven,并且可以使用互联网连接。

第一个是Swift Code Generator Tool。正如它的自述状态,必须:

  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. 在包含thrift文件的目录中运行下载的jar:

    java -jar /tmp/swift-generator-cli-0.23.1-standalone.jar -use_java_namespace -out ../java *.thrift
    
  3. 假设标准

    - src
      - main
        - java
        - thrift
    

    Maven项目布局。 Swift Code Generator将为每个Thrift service条目生成一个Java接口。每个Thrift源文件都必须声明一个'java'命名空间,如下所示:

    namespace java com.acme
    

    生成的接口将包含用于异步调用的嵌套Async接口。删除Async子接口。 Async删除的自动化留给读者作为练习。

    使用javac或您最喜欢的构建工具(ant,maven,gradle等)编译生成的java文件。不要忘记将com.facebook.swift:swift-annotations:0.23.1包含为编译依赖项。

    最后使用Axis2 binary distribution中提供的Apache Axis2'java2wsdl实用程序,如下所示:

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

    为Thrift service TargetService {...}条目生成wsdl。