TomcatのmaxParameterCountを設定する

Webアプリケーション自動生成ツールを使用して、JavaベースのWebアプリを開発をしていたときに直面した課題。ある日、以下のようなエラーログが出力された。

ざっくり和訳すると「リクエストパラメータの上限を超えました。超えた分のパラメータは無視されます。上限を変えるにはConnectorのmaxParameterCountを参照してください」とのこと。

catalina.outに出力されていたけど、特にTomcatとしてエラーになることなくこのログが出力されていた。しかし、パラメータが無視されたらまともに動かない。。。

これまでスクラッチで開発する場合は、パラメータの数は自分で把握できていたのですが、今回はある程度コーディングしなくてもいいWebアプリケーション自動生成ツールを使用したためにパラメータの数は自分で把握していませんでした。maxParamterCountのデフォルト値が10,000だったので、とりあえず20,000に変更したら解消しました。

また、これを機にmaxParamterCountに加えて、maxPostSizeも見直した方がよいことが分かりました。設定は、{Tomcatインストールディレクトリ}/conf/server.xml。それぞれの詳細は以下。

パラメータ 内容
maxParamterCount

The maximum number of parameter and value pairs (GET plus POST) which will be automatically parsed by the container. Parameter and value pairs beyond this limit will be ignored. A value of less than 0 means no limit. If not specified, a default of 10000 is used. Note that FailedRequestFilter filter can be used to reject requests that hit the limit.

→要約すると、「最大パラメータ数。超えた分は無視される。0以下をセットすると無制限。指定が無い場合はデフォルト値の10,000となる。」

maxPostSize

The maximum size in bytes of the POST which will be handled by the container FORM URL parameter parsing. The limit can be disabled by setting this attribute to a value less than zero. If not specified, this attribute is set to 2097152 (2 megabytes). Note that the FailedRequestFilter can be used to reject requests that exceed this limit.

→要約すると、「POSTリクエストの最大サイズ(バイト)。0以下を設定すると無制限になる。指定されていない場合は、2MBとなる。」

公式サイト→http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html

設定例


JavaプログラムのHTTP/HTTPS通信でプロキシを経由させる

IBMのWatson APIをいろいろ試してみたくて、職場のPCでJavaから呼び出しみたが、以下のようなエラーがでてしまった。。。

(うすうす感づいてはいたが。。。)自宅のPCでおなじJavaを動かすとなんの問題もなく動いた。(ちなみに、試したのはDocument Conversionというサービス)

つまり、職場のネットワークからだとつながらないということがわかり、職場はプロキシサーバがあるので、プロキシサーバを通すように以下のJVMのシステムパラメータを設定して動かしたところうまくいった!!

パラメータ 内容
http.proxyHost プロキシサーバのホスト名(HTTP)
http.proxyPort プロキシサーバのポート番号(HTTP)
https.proxyHost  プロキシサーバのホスト名(HTTPS)
https.proxyPort プロキシサーバのポート番号(HTTP)
http.nonProxyHosts プロキシを省略して、直接到達するホストのリスト。各ホストを “|” で区切ることで複数指定可能。

プロキシの指定の方法は2つある。

方法1:ソースコードで指定する


Javaソースの中で直接指定します。

●サンプル

方法2:起動パラメータで指定する


Javaの起動パラメータで直接指定します。

 ●サンプル

もちろん、Eclipseのプロジェクトの”右クリックメニュー” → “実行” > “実行の構成を開く” > “引数タブ” > “VM引数”で指定してもOK。

 


2016/8/27(土) いきものがかり 超いきものまつり2016 地元でSHOW!! ~海老名でしょー!!!~

cho-matsuri-2

セットリスト

2016.8.27 海老名運動公園

1.ありがとう
2.風が吹いている
3.ラブとピース!
4.花は桜 君は美し
5.気まぐれロマンティック
6.Sweet! Sweet! Music!
7.笑ってたいんだ
8.じょいふる
9.YELL
10.ラストシーン
11.キミがいる
12.地球
13.翼
14.Good Morning
15.夏・コイ
16.帰りたくなったよ

アンコール:
1.ぼくらのゆめ
2.夢題~遠くへ~
3.SAKURA

 

いきものがかりライブに初参戦!

当たり前ですが歌が上手くて、どれも耳にしたことのある曲ばかり!!

天気は最悪でしたが、それでも行ってよかった(´▽`)

シークレットゲストに明石家さんまさんがきて、超ラッキー(^^)v

http://ikimonogakari.com/cho-matsuri/


日々のSE業務で得たノウハウと趣味