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

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

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


サーバ設定ファイル (conf/server.xml)
メッセージの通りに、server.xmlのConnectorに、maxPostSizeを追加して対処しました。
(下記はmod_jkでApacheと連携している環境です。使っているConnectorに対して指定する必要があります。)

------------------------------------------------------------


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

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

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

◆
ポート8009でApacheと連携できる
ポート8080で単体で稼働(主に状態確認用)できる
HttpServletRequest#setCharacterEncodingがGETパラメータにも適用される(useBodyEncodingForURI)
ユーザのホストをlookupできる(enableLookups)
POSTのデータサイズを10Mに制限(maxPostSize)
appBaseを/home側に移動(Tomcat本体の配置場所から遠ざけ、アプリケーション配置時の事故等を防止)
server.xml