2

我正在尝试从以下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 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。

4

3 回答 3

3

最终我得到了:

<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>
于 2012-02-29T17:14:54.057 回答
1

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)。

于 2012-01-26T07:46:20.533 回答
0

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

于 2011-12-02T23:28:23.377 回答