本記事の内容は Play framework 開発者の方々意向で ドキュメントに載せていない隠しAPI的な位置づけの機能を使っています。 どうしても使わざるを得ない場合を除いては使わない方が良いかと思います。
ちょっとしたものを Play framework(Java) で書いて Tomcat上で動かすということをしているのですが、
- Apache ->(mod_proxy_ajp)-> Tomcat
という連携でApacheからTomcatに渡される環境変数を playで受け取れなくて困っていました。
そこで色々調べたのですが HttpServletRequest を扱う方法がありました。
隠されてましたが
#99: Lighthouse 588 patch by grandfatha for playframework/play - Pull Request - GitHub
すべてはここに書いてあります。 ものすごく意訳すると
こんなに美しくないアイデアはないけど、
Servlet APIにアクセスせざるを得ないユーザがいるのは事実。
モジュールに切り離せればベストだけどそれもできないからマージするよ。
でもこんなのドキュメントになんか書いてあげないんだからねっ!
ということでコントローラ内から以下のコードでアクセスできます。
HttpServletRequest req = (HttpServletRequest)request.args.get(ServletWrapper.SERVLET_REQ);
上記の通り、あえてドキュメントに書かれていないことなので 2度目になりますが、どうしてもという場合以外は使わない方が良いと思います。