【问题标题】:wsimport: adding Binding when the XSD is embedded in WSDL?wsimport:当 XSD 嵌入 WSDL 时添加绑定?
【发布时间】:2011-12-02 20:59:58
【问题描述】:

我正在尝试从以下 WSDL 生成一些 java 代码:http://www.ebi.ac.uk/Tools/services/soap/emboss_needle?wsdl

$ wsimport -keep  "http://www.ebi.ac.uk/Tools/services/soap/emboss_needle?wsdl"

但是它会生成一些JAXBElement<String> 而不是String。所以我尝试使用这里描述的 xjb 绑定:Get rid of JAXBElement in classes generated by wsimport called from ant

<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
  <jxb:bindings>
    <jxb:globalbindings generateelementproperty="false">
      <jxb:javatype name="java.lang.String" xmltype="xs:string"/>
    </jxb:globalbindings>
  </jxb:bindings>
</jxb:bindings>

但是 wsimport 引发了异常:

$ wsimport -keep -b binding.xjb "http://www.ebi.ac.uk/Tools/services/soap/emboss_needle?wsdl"
[ERROR] The "jxb:globalbindings" customization is not associated with any schema element.
  line 6 of file:/home/lindenb/tmp/WS/biostar14996.xjb

XSD 模式嵌入在 WSDL 文档中。我应该为 jxb:schemaLocation 提供什么 URI?我该如何解决这个问题?

谢谢,

P.

【问题讨论】:

    标签: java xsd wsdl wsimport


    【解决方案1】:

    最终我得到了:

    <jxb:bindings version="2.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" wsdlLocation="YOUR_WSDL_LOCATION">
        <jxb:globalBindings generateElementProperty="false"/> 
    </jxb:bindings>
    

    【讨论】:

      【解决方案2】:

      EMBL-EBI 的 EMBOSS 针头服务 (http://www.ebi.ac.uk/Tools/services/soap/emboss_needle?wsdl) 和他们的大多数其他分析工具服务 (请参阅 http://www.ebi.ac.uk/Tools/webservices/) 允许提交参数具有三种状态:

      1. 显式值
      2. 空值
      3. 省略

      这提供了与广泛的 SOAP 工具包的兼容性,其中一些只假设这三种行为中的一种或两种。

      不幸的副作用是 JAX-WS 等工具包需要使用更复杂的表示来处理这三种状态。因此需要 JAXBElement 类。 EMBL-EBI 为示例客户端提供了使用 JAX-WS 的源代码,用于它们的 InterProScan (SOAP) 和 NCBI BLAST (SOAP) 服务,它们的参数使用相同的模式(请参阅http://www.ebi.ac.uk/Tools/webservices/tutorials/06_programming/java/soap/jax-ws)。

      【讨论】:

        【解决方案3】:

        我相信你的问题类似于this post;有指向文档和解决方案的链接;基本上,当您绑定 WSDL 文件时,您需要一个不同的顶级元素;接受的响应也会为您提供命令行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多