use*_*353 7 java wsdl web-services jax-ws wsimport
我正在使用wsimport为JAX-WS webservice调用生成客户端存根
wsimport有-p选项,允许自定义包的名称.
例如.如果WSDL具有com.abc的命名空间,则可以通过wsimport使用-p com.pqr命令行调用com.abq来替换com.abc .
但是,只有在wsdl中只使用一个命名空间时,这才能正常工作.
如果wsdl中有多个名称空间,是否有办法用不同的包名替换每个名称空间.
例如.如果我希望命名空间com.abc.s1被命名空间com.pqr.s1和命名空间com.abc.s2替换为命名空间com.pqr.s2.
如果我使用wsimport -p com.pqr.s1,它会将所有生成的类放入com.pqr.s1
有没有办法实现我想要的?
通常,您使用 jax-b 绑定文件来自定义给定 XSD 或 WSDL 的解组过程。绑定语言提供了<package/>用于定制模式的生成包的指令。
给定单独的架构,在单独的文件中,您可以拥有一个如下所示的复合绑定文件:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
jaxb:version="2.0">
<jaxb:bindings schemaLocation="Flight.xsd" node="/xsd:schema">
<jaxb:schemaBindings>
<jaxb:package name="travel.flight"/>
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="Hotel.xsd" node="/xsd:schema">
<jaxb:schemaBindings>
<jaxb:package name="travel.hotel"/>
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)
whereschemaLocation将指代各个模式文件的位置,node指的是绑定声明应该应用于的 XML 元素。<jaxb:package/>将定义输出包的名称。
然后你应该使用指令将绑定文件提供给wsimport-b,你应该没问题
参考:
| 归档时间: |
|
| 查看次数: |
13684 次 |
| 最近记录: |