1

に基づく Spring Webservice がありAbstractJDomPayloadEndpointます。クライアントが HTTP ヘッダーContent-Typeを正しい文字セット (私の場合は utf-8) に設定する必要があることを除いて、このサービスは正常に動作します。それを設定できる場所が見つかりません。

簡単なサーブレットを書いてみましたFilter

chain.doFilter(request, response);
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Type", "text/xml; charset=utf-8");

しかし、これはヘッダーをまったく変更しません。コンテンツ タイプ ヘッダーは Spring-WS によって設定され、応答はコミットされていると思われるため、フィルターに設定したものは何も影響しません。

私のアプリケーション サーバーは WebLogic 9.2.3 です。

4

1 に答える 1

1

はい、フィルター コードは失敗します。doFilter()これは、完了するまでに応答が完全にコミットされており、コンテンツ タイプ ヘッダーを変更できないためです。

のサブクラスを作成し、 and/orメソッドをHttpServletResponseWrapperオーバーライドして値を必要な値に設定することをお勧めします。次に、(元の応答をラップする) ラッパーのインスタンスを.setContentType()setCharacterEncoding()doFilter()

于 2010-10-13T19:27:35.980 に答える