2

ApacheGeronimo2.1.3にWebサービスアプリがあります。

私はJAX-WSを使用しており、SOAP1.1を使用してPOJOSに注釈を付けています。(Sun JDK 1.5を使用)

さまざまなクライアントが問題なくWebサービスを使用しています。

1つの新しいクライアントが機能していません。動作中のクライアントでは、soapenv:Bodyの下の子要素のみに名前空間宣言があり、子の子要素には名前空間宣言がありません。新しいクライアントでは、子の子を含む、soapenv:Bodyのすべての子孫に名前空間宣言があります。

本質的に、これは機能します:

<soapenv:Body>
<ns1:Echo>
  <Message>Hello world</Message>
...

しかし、これはしません:

<ns1:Echo>
  <ns1:Message>Hello world</ns1:Message>
...

アプリにログインすると、「Helloworld」ではなくメッセージがnullであることが示されます

この「悪い」リクエストは大丈夫ですか?WS-I基本プロファイルを確認しているように見えますか?

クライアントプログラムは変更できません。このリクエストの両方のバージョンを機能させるために、何かをオーバーライドする方法はありますか?

4

1 に答える 1

3

Messagens1:Messageは、架空の Java クラスMessagens1.Message. サーバーは、デフォルトの名前空間で宣言されている要素を期待します (どこかMessageに があるはずです) が、 を取得して単純に無視します。xmlns="<my.default.namespace.name>"<ns1:Message>

クライアントに (wsdl に従って) 有効な xml soap メッセージを送信させることができない場合は、サーバー コードを変更して、<Message>要素だけでなく子要素も<ns1:Message>受け入れるようにしてください<ns1:Echo>。名前空間から要素の型を宣言し、宣言に要素をns1追加する必要があります。choice<ns1:Echo>

于 2010-11-03T14:10:14.790 に答える