2011-12-02 31 views
2

我想从以下WSDL生成一些java代码:http://www.ebi.ac.uk/Tools/services/soap/emboss_needle?wsdlwsimport:当XSD嵌入到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.

回答

0

我相信你的问题是类似this post;有链接指向你的文档,以及解决方案;基本上,当你绑定WSDL文件时,你需要一个不同的顶层元素;接受的回应也会给你命令行。

1

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

  1. 明确的值
  2. Null值
  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

我终于结束了:

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