1

CXF 2.2.3 を使用して WebService を呼び出すと、次のエラーが発生します。エラーは、WebService がデータを返すときに発生します。

アンマーシャリング エラー: 予期しない要素 (uri:"http://service.claimservice.hospital.www.wcb.ab.in"、local:"accidentAddress")。期待される要素は <{http://domain.claimservice.hospital.www.wcb.ab.in}employerContactInfo>,<{http://domain.claimservice.hospital.www.wcb.ab.in}accidentCountry>,< です。 {http://domain.claimservice.hospital.www.wcb.ab.in}denialReason>,<{http://domain.claimservice.hospital.www.wcb.ab.in}workerContactInfo>,<{http:/ /domain.claimservice.hospital.www.wcb.ab.in}accidentPostalCode>,<{http://domain.claimservice.hospital.www.wcb.ab.in}entitlementDecisionDate>,

私のwsdlを変更することでこのエラーを取り除くことができるかどうか、誰か教えてもらえますか?

ありがとう、

4

1 に答える 1

1

簡単に言えば、リクエストには{http://service.claimservice.hospital.www.wcb.ab.in}accidentAddress、「期待される要素」リストの要素のみが有効な場所に、完全修飾名を持つ XML の要素が含まれているということです。

これは、アンマーシャラーのコンテキストに基づいており、最終的には、データ型が読み取られたスキーマ (WSDL の「型」セクションに提示/インポートされたスキーマである必要があります) に基づいています。

質問の情報に基づいて、応答パイプラインが問題であるため、サーバー側のマーシャラーとクライアント側のアンマーシャラーが同期していません (異なるスキーマから作成されました)。

推奨されるトラブルシューティング (サーバー側でマーシャラー オブジェクトを使用することを想定):

  1. 問題のあるメッセージの XML をキャプチャします。

  2. XML が WSDL のタイプ セクションに示されている内容と一致しているかどうかを判断します。

  3. XML が WSDL に準拠している場合、クライアント側のアンマーシャラーに WSDL で提示されているものとは異なるデータ型が提供されている可能性があります。

  4. XML が WSDL に準拠していない場合は、サーバー側の XML マーシャラーが正しくないメッセージを作成しています (または、正しいメッセージを作成しているのに WSDL が正しくないなど)。この場合、古いデータ型に対してマーシャラーが作成された可能性があります。

マーシャラー オブジェクトを使用せず、代わりに手動でサービス レスポンスを作成する場合、問題は、accidentAddress 要素が XML メッセージの有効な部分ではない場合、またはメッセージの有効な部分であるが間違った場所にある場合に作成されることです。含む要素に相対的です。

これは少し長文ですが、役立つ情報が含まれていることを願っています。

于 2012-05-14T04:01:03.430 に答える