Java Web StartのJNLPファイルをキャッシュするときにファイル名として「?」が使えないので、クエリー文字列ではパラメータが渡せない。
サーブレットマッピングを工夫してファイル名として渡す。
「*.jnlp」とか「/jnlp/*」とかにする。後者にして「/jnlp/111.jnlp」とかにするのが扱いやすい。
ちなみに、Java Web Start起動プログラムがJNLPファイルをアクセスしなおすので、セッションにデータを持たせても無駄。
ということでJNLPを動的生成するときの注意
- クエリー文字列は使えない
- JavaWebStart起動プログラムから呼び出しなおされるのでセッションは使えない
- 数回(5回?)アクセスされるのでデータ追加などの副作用をもたせない
- データの状態やセッション情報によって内容が変わらないようにする