1

私の WebService は WebLogic 10.3.3 にデプロイされています。

WSDL/XSD では、入力パラメーターnumberが必須であると説明されています。

<xs:element minOccurs="1" maxOccurs="1" name="number" type="xs:int"/>

MinOccurs="1"XML メッセージ<number>にはタグが含まれている必要があるということですね。

WebLogic はすべてのリクエストを検証する必要があり、リクエストが無効な場合はサーバー エラー レスポンスがスローされるはずです。

残念ながら、私の SOAP クライアントはタグなしで SOAP リクエストを送信でき<number>、私の Web サービス実装はそのような無効なリクエストを受け取ります。

教えてください、それは正しい動作ですか、それとも WebLogic の欠陥ですか?

Web サービスで独自の XML 検証を実行する必要がありますか?

4

2 に答える 2

0

WebLogic では、デフォルトで XSD スキーマ検証が有効になっていません。Web サービス @SchemaValidation に注釈を追加することで有効にできます (com.sun.xml.ws.internal.developer ではなく、com.sun.xml.ws.developer バージョンであることを確認してください)。ただし、複雑な XSD スキーマがある場合 (GS-1 XSD スキーマに問題がある場合など)、この種の検証はうまく機能しません。weblogicが使用するxmlファイルのxercexパーサーと関係があると思います.すべての要素を常に見つけることができるとは限らないためですが、これまでのところ、その根底にたどり着くことができませんでした. 単純なスキーマでは問題なく機能します。

複雑なスキーマを検証する必要がある場合は、独自のバリデーターを作成し、それを WS メッセージ ハンドラーに追加することをお勧めします。これはかなりの作業ですが、それを完全に制御できます。これまでのところ、他の解決策は見つかりませんでした.

于 2013-02-15T14:58:13.567 に答える
0

同様の状況については、こちらの私の回答をご覧ください。

既に指摘したように、@SchemaValidationWebLogic にメッセージを検証するように指示する提供された注釈を使用できます。

于 2015-01-22T00:23:52.937 に答える