是否有任何开源库或在线服务可以自动生成基于节俭IDL的wsdl规范?
目标是在现有的thrift API之上构建facade API,允许通过SOAP协议与ansient系统耦合。
答案 0 :(得分:0)
有一些准备使用的工具可以将Thrift IDL转换为WSDL。答案的其余部分假设我们生活在Java世界中,手头有JDK和Maven,并且可以使用互联网连接。
第一个是Swift Code Generator Tool。正如它的自述状态,必须:
下载最新版本:
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/
在包含thrift文件的目录中运行下载的jar:
java -jar /tmp/swift-generator-cli-0.23.1-standalone.jar -use_java_namespace -out ../java *.thrift
假设标准
- 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。