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

Java 用于为JAX-WS客户端下载/导入WSDL文件的工具,java,jax-ws,cxf,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:/

我正在使用一个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上运行的工具检查来自Windows SDK的

svcutil /t:metadata http://service/metadataEndpoint
此工具使用Web服务描述语言(WSDL)查找或发现描述特定XML Web服务的一个或多个相关文档


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

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

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

new SomeRandomJaxWSService(new URL(wsdl),new QName(namespace, serviceName))

SoapUI似乎可以做到这一点,但我更喜欢使用命令行工具来完成此任务。问题不是生成文件,而是在生成文件时解析对本地而不是远程URI的内部命名空间引用。