2011-09-09 16 views
2

Axis 1クライアントでAxis 1 Webサービスを使用しています。すべてが非常にうまく動作しており、Webサービスから取得しているデータは正しいです。 Axis 2を使用するためにWebサービスを移動する必要があります。Axis 1クライアントでデータを取得する際に問題があります。 SOAPUIを使用して、私が得ている応答の形式を見てきました。軸1 WebサービスとAxis 2 Webサービスとの互換性のないAxis 1クライアント

、応答は以下の通りであった:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body> 
     <getInventoryResponse xmlns="http://webservices.com"> 
     <getInventory> 
      <errorCode>10071</errorCode> 
      <inventory xsi:nil="true"/> 
     </getLastInventoryCountReturn> 
     </getInventoryResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

軸2のWebサービスでは、次のように、応答は次のとおりです。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <ns:getInventoryResponse xmlns:ns="http://webservices.com"> 
     <ns:return xsi:type="ax21:Inventory" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax21="http://model.com/xsd"> 
      <ax21:errorCode>10071</ax21:errorCode> 
      <ax21:inventory xsi:nil="true"/> 
     </ns:return> 
     </ns:getInventoryResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

あなたが見ることができるように、 "errorCode"という要素の値は10071です。私は両方のWebサービスから正しくクライアントのerrorCode値を受け取ります。しかし、私は応答の一部として受け取る "インベントリ"と呼ばれる複雑な型を持っています(Webサービス上の適切なデータを埋めるために時間がかかりますので、上記の回答には表示されません)。 InventoryItemには、さまざまなデータ型(String、Calendar)のフィールドが含まれています。 Axis 2 Webサービスからの応答には<axs21> xmlタグが含まれていますが、Axis 1 Webサービスではそこには存在しません。だから私はクライアント側でAxis 2 Webサービスからの応答を解析する問題があると仮定しています。

どのように私はこれを解決することができます知っていますか?

+0

Axis2で生成されたwsdlとの非互換性は何ですか? Axis2はデフォルトでdoc/lit type wsdlを生成します。これはどんな石鹸のフレーム作業でも動作するはずです。 –

+1

問題をより詳しく説明するために投稿を編集しました。それを確認して、何を考えているか教えてください。 –

+0

私は何を意味しますか?**私は問題があると仮定しますか?それは問題になる可能性が高いようですが、あなたはテストしていませんか? –

答えて

1

明らかに私は間違ったことをしていました。 WebサービスをAxis 1からAxis2に移動するときに、クライアントコードを再作成する必要がありました。