0

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

4

2 回答 2

1

检查 Windows SDK 中的ServiceModel 元数据实用工具 (Svcutil.exe)

svcutil /t:metadata http://service/metadataEndpoint

此工具使用 Web 服务描述语言 (WSDL)定位发现描述特定 XML Web 服务的一个或多个相关文档。

于 2013-03-21T01:12:57.307 回答
0

我不知道我是否正确理解了你的问题。我也在与 Jax-ws/SOAP 进行战斗。:)

如果您需要生成调用 web 服务所需的 java 类,您可以使用Apache CXF。在它里面你有一个wsdl2java。你可以在linux上使用它。Java SDK 中的另一个选项,在 bin 文件夹中,您也可以使用 wsimport。

编辑:您可以在运行时使用 Apache CXF 创建的服务类更改最终 URL。

new SomeRandomJaxWSService(new URL(wsdl),new QName(namespace, serviceName))
于 2013-06-24T14:27:18.733 回答