0

Axis2を使用してSOAPWebサービスに接続しようとしています。これは以前はAxis1で機能していましたが、2が問題を引き起こしています。Axis2のスタブを生成したJavaコードを再wsdl2java生成しましたが、サーバー応答の要素を「予期しないサブ要素値」で処理するとフォールオーバーします。

問題のwsdlドキュメントのフラグメントは次のとおりです。

<complexType name="A">
<sequence>
<element name="a" type="xsd:base64Binary" minOccurs="1" maxOccurs="1" nillable="false" />
<element name="b" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="c" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="d" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="e" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="f" type="xsd:string" minOccurs="1" maxOccurs="1" />
</sequence>
</complexType>

返される応答は次のようになります。

<stuff>
<a>dsfusdbifsdisuibvuidnfuisndfvl\sbvuidn</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>dsfusdbifsdisdfsfsdfsdfuibvuidnfuisndfvl\dfgd</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>dsfusdbifsdisuibvuidnfuisndfvl\sdfsdfvv</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>wwasdfgfbdfb\sbv==uidn</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>

ある種のこと。これらの<stuff>ブロックのほとんどは正常に処理されますが、最後のブロック<b>は上記のエラーで失敗します。コードをデバッグすると、 falseが返されreader.isStartElement()、falseが返されるため、失敗します。「a」が返されます。さらにデバッグすると、通常返されるラップされたオブジェクトタイプの代わりに「文字列」が報告されます。私はAxiom1.2.7と1.2.8でこれを試しましたが、どちらも同じ問題を抱えているようです。これは既知のバグですか、それとも誰かが何が起こっているのかを明らかにすることができますか?new javax.xml.namespace.QName("","b").equals(reader.getName())reader.getName()reader.currentElement

4

1 に答える 1

0

これはSAXバインディングジェネレーターの問題だったようです。JAXBバインディングを切り替えると、問題が修正されました。

于 2010-09-06T14:02:05.050 に答える