TomcatでのPOSTサイズの上限

テキストエリアで1Mぐらいのテキストを入力し、POSTで送ったところ、HTTPステータス500が返ってきました…
Tomcat(5.0.28)のログ見ると、下記のような例外吐いてました。

java.lang.IllegalStateException: Post too large

POSTサイズが大きすぎるとのこと!
親切にcatalina_log.(日付).txtには、下記のようなメッセージが出力されています。

CoyoteRequest POSTされたデータが大きすぎたので、パラメータが構文解析できませんでした。
そのアプリケーションが巨大なPOSTを受け付けねばならない場合には、これを解決するためにコネクタのmaxPostSize属性を使用してください。

TomcatでのPOSTサイズの上限ってのがあるって事に、初めて気が付きました…


メッセージの通りに、server.xmlのConnectorに、maxPostSizeを追加して対処しました。
(下記はmod_jkApacheと連携している環境です。使っているConnectorに対して指定する必要があります。)

<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
           enableLookups="false" redirectPort="8443" debug="0"
           protocol="AJP/1.3" maxPostSize="4194304" />

デフォルトだと2Mのようなので、とりあえず4Mに変更。0にすると上限値無しとなるようです。
入力したのは1Mのテキストですが、エンコーディングが噛むのでPOSTされるデータサイズとして2Mを超えてしまいました。

ファイルアップロードでもっとでかいサイズを送ったりするようなアプリを作った時には、こんなパラメータを設定した記憶が無いので、enctype="multipart/form-data"だと、この制約に引っかからないのかもしれません。(Strutsのファイルアップロードの上限値の設定は変えた記憶はあり)

というか、FORMに1Mのテキストを入力すること自体、ブラウザの動作は怪しく(重く)なります…


参考: