プロト開発でChromeをメインに使っていて気付かなかったのですが、作成したプロトのwebアプリケーションを他のブラウザで動かしたら、ログイン後のURLにセッションIDが表示されていました;
http://localhost:8080/MyPrototype/faces/login.xhtml;jsessionid=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
確認した限りでは、IE9,Firefox,Safariで表示されました。なぜChromeでは出なかったんだろう…謎。
いわゆるURL埋めこみとかURLリライティングと呼ばれるものですが、何かの本ではJava Servlet(J2EE)ではデフォルトでこうなることはない、と書いてありました。JavaEE6ではデフォルトなのでしょうか…?これも謎
ASP.NETではデフォルトがクッキーでした、確か。
いずれにせよ、IPAのセキュアプログラミング講座(http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/302.html)にもあるように、利用は推奨されていません。
ということで、web.xmlに以下を追加して解決しました。
<session-config>
<tracking-mode>
COOKIE
</tracking-mode>
</session-config>