用于下载/导入JAX-WS客户端的WSDL文件的工具

时间:2013-03-20 09:38:08

标签: java jax-ws cxf

我正在使用一个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的工具

2 个答案:

答案 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))