My Oracle Support Banner

HttpServletResponse.sendError メソッドにマルチバイト文字を設定すると ProtocolException が発生する (Doc ID 1902555.1)

Last updated on MARCH 26, 2020

適用範囲:

Oracle WebLogic Server - バージョン 10.3.1 から 10.3.6
Oracle WebLogic Server - バージョン 12.1.1.0 から 12.1.3.0.0 [リリース 12c]
この文書の内容はすべてのプラットフォームに適用されます。

現象

javax.servlet.http.HttpServletResponse.sendError(int sc, String msg) メソッドが引数 'msg' にマルチバイト文字を含む状態で実行されると、ProtocolException が発生します。HTTP クライアントは sendError メソッドに設定されたすべてのエラーメッセージを受信することができません。WLS サーバログには例外と関連のエラーが出力されます。

####... <Error> <HTTP> ... <BEA-101083> <Connection failure.
java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '9' bytes instead of stated: '3' bytes.
        at weblogic.servlet.internal.ServletOutputStreamImpl.ensureContentLength(ServletOutputStreamImpl.java:463)
        at weblogic.servlet.internal.ServletResponseImpl.ensureContentLength(ServletResponseImpl.java:1496)
        at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1570)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1574)
        at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
>

sendError メソッドへの引数 'sc' に設定されたコードが HTTP ステータスコードとして access.log に出力されます。

xxx.xxx.xxx.xxx - - [...] "GET /SendErrorServlet/senderrorservlet HTTP/1.1" 500 3

 

原因

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


本書の内容
現象
原因
解決策
参照情報

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.