2012年11月20日火曜日

TomcatでのPOSTサイズの上限

POSTサイズが2Mを超えるとき、TomcatでもJBossでもPOSTサイズが2Mを超えると、デフォルトの設定のままでは次のような例外が発生する。

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/appname] - POSTされたデータが大きすぎたので、パラメータが構文解析できませんでした。そのアプリケーションが巨大なPOSTを受け付けねばならない場合には、これを解決するためにコネクタのmaxPostSize属性を使用してください。
he.catalina.core.ContainerBase.[Catalina].[localhost].[/appname].[xxxServlet] - サーブレット xxxServlet のServlet.service()が
例外を投げました
java.lang.IllegalStateException: Post too large
at org.apache.catalina.connector.Request.parseParameters(Request.java:2368)
at org.apache.catalina.connector.Request.getParameterNames(Request.java:1047)
at org.apache.catalina.connector.RequestFacade.getParameterNames(RequestFacade.java:369)
これはデフォルトでPOSTのサイズが2Mになっているからであり、設定を変更する必要がある。
server.xmlのConnector要素を変更する。

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" maxPostSize="4194304"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
maxPostSize属性でバイト数を指定する。4194304は4M。
0以下を指定すると無制限となる。


なおこれはあくまでPOSTのサイズであり、ファイルアップロードのサイズとはまったくかかわりがない。
multipart/form-dataのサイズ制限にはならないので注意する。

0 件のコメント:

コメントを投稿