使用 wsimport 和 JAX 绑定按模式生成包会忽略服务 类
Generating packages by schema with wsimport and JAX bindings ignores Service classes
我有一个包含多个模式的 WSDL,我正在尝试让 wsimport
将代码生成到我选择的包中(按模式)。使用带有 JAX-WS/JAX-B 绑定文件的 -b 选项,我基本上做到了。
只有两个类仍然生成到默认路径:服务接口和服务实现。
另一方面,使用 -p 选项,所有 类 都生成到一个包中,但是当我使用它时,外部文件中定义的所有绑定都将被忽略。
该服务的 XPath 是什么,以便 wsimport
将这些文件生成到我的包中?
我试过
<jaxws:bindings node="wsdl:definitions/wsdl:service"> ...
<jaxws:bindings node="wsdl:definitions/wsdl:binding"> ...
<jaxws:bindings node="wsdl:definitions/wsdl:portType"> ...
但都没有任何效果。
示例:
<jaxws:bindings
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
wsdlLocation="myService.wsdl"
>
<!-- this works for schemas -->
<jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://org.com/service/1.0']" >
<jaxb:schemaBindings>
<jaxb:package name="com.myorg.service.v1" />
</jaxb:schemaBindings>
</jaxws:bindings>
<!-- the following does nothing -->
<jaxws:bindings node="wsdl:definitions/wsdl:service">
<jaxb:schemaBindings>
<jaxb:package name="com.myorg.service.v1" />
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>
根据 JAX-WS specification 第 8.4.1 节,您不需要 XPath 来为 JAX-WS 类 指定包,例如服务和端口 类:
<jaxws:bindings wsdlLocation="http://example.org/foo.wsdl">
<jaxws:package name="com.acme.foo"/>
我有一个包含多个模式的 WSDL,我正在尝试让 wsimport
将代码生成到我选择的包中(按模式)。使用带有 JAX-WS/JAX-B 绑定文件的 -b 选项,我基本上做到了。
只有两个类仍然生成到默认路径:服务接口和服务实现。
另一方面,使用 -p 选项,所有 类 都生成到一个包中,但是当我使用它时,外部文件中定义的所有绑定都将被忽略。
该服务的 XPath 是什么,以便 wsimport
将这些文件生成到我的包中?
我试过
<jaxws:bindings node="wsdl:definitions/wsdl:service"> ...
<jaxws:bindings node="wsdl:definitions/wsdl:binding"> ...
<jaxws:bindings node="wsdl:definitions/wsdl:portType"> ...
但都没有任何效果。
示例:
<jaxws:bindings
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
wsdlLocation="myService.wsdl"
>
<!-- this works for schemas -->
<jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://org.com/service/1.0']" >
<jaxb:schemaBindings>
<jaxb:package name="com.myorg.service.v1" />
</jaxb:schemaBindings>
</jaxws:bindings>
<!-- the following does nothing -->
<jaxws:bindings node="wsdl:definitions/wsdl:service">
<jaxb:schemaBindings>
<jaxb:package name="com.myorg.service.v1" />
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>
根据 JAX-WS specification 第 8.4.1 节,您不需要 XPath 来为 JAX-WS 类 指定包,例如服务和端口 类:
<jaxws:bindings wsdlLocation="http://example.org/foo.wsdl">
<jaxws:package name="com.acme.foo"/>