2012-01-13 19 views
0

Webサービスに問題があります。IBMとAxis 1.4 Webサービスの互換性

IBM Webサービスのスタックを使用して、WebSphereアプリケーションサーバーで長時間実行され実行されていたWebサービスがありました。今私はそれをglassfish v2.1.1にAxis 1.4スタックに移行しました。 WebサービスのWSDLがクライアントの互換性を維持するために変更されていない

ブール型の戻り値を持つWebサービスメソッドがあります。

例:

のWebSphere:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <soapenv:Body soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
     <checkPendingOperationsResponse xmlns="http://operations.appserver.dealer.omnitel.lt"> 
      <checkPendingOperationsReturn xsi:type="xsd:boolean" xmlns="">0</checkPendingOperationsReturn> 
     </checkPendingOperationsResponse> 
     </soapenv:Body> 
    </soapenv:Envelope> 

Glassfishの:

<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> 
     <ns1:checkPendingOperationsResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://operations.appserver.dealer.omnitel.lt"> 
      <checkPendingOperationsReturn href="#id0"/> 
     </ns1:checkPendingOperationsResponse> 
     <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:boolean" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">false</multiRef> 
     </soapenv:Body> 
    </soapenv:Envelope> 

問題は、一部のクライアントがあるということです、私は私の方法石鹸応答はGlassFishの中に異なる返し呼び出すときに問題があります以前に返された値が "1"、 "0"だったので、 "false"、 "true"の値を扱うことはできません。

解決できない解決策はありますか?

ありがとうございます。

+1

Axis 1.xは貧弱なWebサービススタックであり、多くの場合、ただ破損しています。移行する場合は、より現代的なものに移行します。 – skaffman

答えて

0

これらの値(真と偽に対応する)に1と0を戻したい場合は、sais hereのようなリターンクラスを強制するか、レスポンスを送信する前にそれを変更するインターセプタを作成します。

+0

しかし、私は強制的に傍受者を書くことはできません。 WebサービスがBooleanを返す場合、intではなくlongではなくBooleanを返す必要があります。 この問題は、gSAOPを使用して生成された一部のクライアントでのみ発生します。 "XML Schema型の不一致"):SOAPブール型エンコーディングの特有の点は、値0と1のみを定義し、組み込みXMLスキーマブール型は偽と真の記号定数を有効な値として定義することです。 –

+0

はい、あなたが正しいです、私が提案していることは、より多くのハックです。残念なことに、あなたがもっと現代的なSOAP Javaフレームワーク(CXFのような)を使ってやり直していない限り、私は何か他に何もしないと思います。 –

関連する問題