我正在使用一个Web服务,其中WSDL文件包含对其他wsdl和xsd模式的导入,例如:
<import namespace="http://my.api.com/" location="http://other.server.com:8888/context/services/MyService?wsdl=1"/>
反过来可以导入其他文件
<xsd:import namespace="http://my.api.com/" schemaLocation="http://other.server.com:8888/context/services/MyService?xsd=1"/>
客户端由cxf使用maven插件生成。主WSDL文件作为类路径资源添加。但是,在运行时,客户端实际上需要访问other.server.com:8888才能完全解析WSDL。所以问题是,是否存在一个工具用于导入和解析WSDL中的所有URL,以便它不依赖于WSDL中其他导入中的绝对服务器URL,并且适合包含在客户端项目中?
我们不控制WSDL,因此我们无法在源代码中更改它。
编辑:寻找适用于Linux的工具
答案 0 :(得分:1)
检查Windows SDK中的ServiceModel Metadata Utility Tool (Svcutil.exe)。
svcutil /t:metadata http://service/metadataEndpoint
此工具找到或发现,这是一个或多个使用Web服务描述语言(WSDL)描述特定XML Web服务的相关文档。
答案 1 :(得分:0)
我不知道我是否理解你的问题。我也在与Jax-ws / SOAP进行战斗。 :)
如果需要生成调用Web服务所需的java类,可以使用Apache CXF。在里面你有一个wsdl2java。你可以在linux上使用它。 Java SDK中的另一个选项,在bin文件夹上有wsimport,你也可以使用它。
编辑:您可以使用Apache CXF创建的Service类在运行时更改最终URL。
new SomeRandomJaxWSService(new URL(wsdl),new QName(namespace, serviceName))