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 バインディングを使用しようとしました。

<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/ ) では、送信パラメーターに次の 3 つの状態を指定できます。

  1. 明示的な値
  2. ヌル値
  3. 省略

これにより、さまざまな SOAP ツールキットとの互換性が提供されます。そのうちのいくつかは、これら 3 つの動作のうち 1 つまたは 2 つしか想定していません。

これの残念な副作用は、3 つの状態があることを理解する JAX-WS などのツールキットが、これを処理するために、より複雑な表現を使用する必要があることです。したがって、JAXBElement クラスが必要です。EMBL-EBI は、サンプル クライアントに、InterProScan (SOAP) および NCBI BLAST (SOAP) サービス用の JAX-WS を使用するソース コードを提供します。これらのサービスは、パラメーターに同じパターンを使用します ( http://www.ebi.ac.uk/Toolsを参照)。 /webservices/tutorials/06_programming/java/soap/jax-ws )。

于 2012-01-26T07:46:20.533 に答える