java - wsimport 客户端 - 自定义多个包名

标签 java web-services wsdl jax-ws wsimport

我正在使用 wsimport 为 JAX-WS 网络服务调用生成客户端 stub

wsimport-p 选项,允许自定义包的名称。

例如。如果 WSDL 具有 com.abc 的命名空间,那么您可以通过使用 -p com.pqr 命令行调用 wsimport 将 com.abc 替换为 com.pqr。

但是,只有当 wsdl 中只使用一个 namespace 时,这才能正常工作。
如果 wsdl 中有多个 namespace ,有没有办法用不同的包名称替换它们中的每一个。

例如。如果我希望将命名空间 com.abc.s1 替换为命名空间 com.pqr.s1 & 将命名空间 com.abc.s2 替换为命名空间 com.pqr.s2。

如果我使用 wsimport -p com.pqr.s1,它会将所有生成的类放入 com.pqr.s1

有没有办法实现我想要的?

最佳答案

通常,您使用 jax-b 绑定(bind)文件为给定的 XSD 或 WSDL 自定义解码过程。绑定(bind)语言提供了 <package/>用于自定义生成的模式包的指令。

给定单独的架构,在单独的文件中,您可以拥有一个看起来像这样的复合绑定(bind)文件:

<?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>

在哪里schemaLocation将引用单个模式文件的位置,node指的是绑定(bind)声明应该应用到的 XML 元素。 <jaxb:package/>将定义输出包的名称。

然后您应该使用 -b 将绑定(bind)文件提供给 wsimport指令,你应该没问题

引用:

关于java - wsimport 客户端 - 自定义多个包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27779697/

相关文章:

java - 不同语言的 Assets

java - list 类路径不起作用

java - 带有 null Date 参数的 Hibernate native 查询

Android:关于ksoap2和webservice

java - 在 JBoss (EAP6) 上禁用自动 wsdl 发布

java - 身份验证处理程序中的 Spring Autowiring

iphone - 如何在 iphone 中使用 WSDL Web 服务?

java - 用 Java 解析 SOAP 响应

java - 具有基本身份验证的 JAX-WS 请求

java - 从 java 1.4 调用 .NET Web 服务