0

それは「後および後のみ」の例外であり、前もって取得するように言われたため、パフォーマンスへの影響は望ましくありません。もちろん理にかなっていますが、例外の後にそれを行う方法がわかりません。

ユースケースは次のようになります: 何人か、おそらく悪者が悪い SOAP を送信し、ディスパッチャが SaajSoapEnvelopeException を排出します。これを優雅に処理するにはどうすればよいですか?

これまでのところ、doService() メソッドをオーバーライドして MessageDispatcherServlet を拡張したものがあります。web.xml ファイルが更新され、この Dispatcher for Spring の構成が表示されます。このオーバーライド内で、スーパー メソッドの呼び出しを try/catch で囲み、例外をキャッチしますが、ここでの問題は、HttpServletRequest のストリームが既に閉じられているため、ここから SOAP を取得できないことです (AFIK.

もう 1 つの問題は、ここに配線するマーシャラーを取得できないことです。使用したい WSDL から生成された Java 障害がありますが、非エンドポイント クラスでのマーシャラーの配線に問題があると思います。おそらく名前空間について何か?おそらく、これらがどのように機能するかを読む必要があります。

結論: 例外の後に SOAP を取得することは可能ですか?それとも、事前に取得できるように例外が発生することを予測することは可能ですか? また、この Dispatcher にフォールト マーシャラーを追加するにはどうすればよいですか? または、フォールトのテキスト バージョンを BS にアップする必要がありますか?

私は Web サービスにかなり慣れていませんが、これまでに知っていることはほとんどが CXF です。これまでのところ、私は Spring WS にあまり感銘を受けていません。彼らにはまだ長い道のりがあります、IMHO。Bean に一致するように適切に名前が変更されない WSDL の XSD 参照に関係する既知のバグが原因で、サービスから WSDL を取得できないという事実は、特に厄介です。

4

1 に答える 1

0

EndpointExceptionResolverを試しましたか? たとえば、認証例外をキャッチして変換するために 1 つを使用しました。

例外リゾルバーをラップするには、おそらくEndpointInterceptorも必要になるでしょう。

于 2012-10-26T12:29:28.837 に答える