GAE/Jのシステム属性を取得してみた。

本当は、これを最初にやらないといけませんでした。

古くからOSSのWebアプリケーションサーバーを使っている人なら、一度は、サーブレット・コンテキスト(javax.servlet.ServletContext)や、ランタイム(Runtime)からシステム属性を取得したことがあると思う。
HTTP ServerとWebアプリケーションを一緒に構築した人であれば、それに加えて、HTTP Request(javax.servlet.http.HttpServletRequest)や、Requestヘッダーの属性も取得したことがあるだろう。
随分前に、Apache2.0.xx+Tomcat4.1.xx(4.0だったかな??)でサーバーを組んだときに、ログインユーザーが取得できなくて、困ったことがあった。たった、2台の構成なのに。
結局は、Request情報を見たら、Remoteユーザーが飛んできてないことが分かって、ネクターのバグということが分かった。結果、バージョンを変えて導入した。たとえば、プロキシだとか、リバースプロキシだとかがネットワークに挟まっている場合にも、こういった情報を活用する必要がある。
ロードバランシングしようとしても、IPスティックでいいかとか、そういう話をするときには、Remoteアドレスが届いてくるか検証してみる価値はある(昔、既設のリバースプロキシを介すのに、IPスティックでやります、といきなり言い切ったSIerさんがいた。。。)。

前置きが長くなったが、GAE/Jのランタイムとサーブレット・コンテキストの属性を取得してみた。以下はその結果。

ランタイム

totalとmaxメモリーの値は(あまり)当てにならないのだが、(Appサーバーが起動した状態で)freeが110M空いてるので、そこそこいけそうだ。ちなみに、ガーベージ・コレクトをかけてみたが、メモリーがちゃんと解放される。
Googleお手製のLinuxに、SUN製のJVM1.6.0_13が乗っかっているのが分かる。アプリケーションに割り当てられたディレクトリ名は変わった命名ルールになっている。1はバージョンの気がするのだが、小数点以下はデプロイを繰り返すと増えていくので、時間か何かかもしれない。
それと、マシンの時間は、グリニッジ時間(GMT)に設定されている。

属性名 属性値
totalMomory 1.048576E8
MaxMomory 1.048576E8
FreeMomory 1.10778048E8
file.separator /
path.separator :
line.separator
java.version 1.6.0_13
java.vendor Sun Microsystems Inc.
java.vendor.url http://java.sun.com/
java.home
java.vm.specification.version 1.0
java.vm.specification.vendor Sun Microsystems Inc.
java.vm.specification.name Java Virtual Machine Specification
java.vm.version 1.6.0_13
java.vm.vendor Sun Microsystems Inc.
java.vm.name Java HotSpot(TM) Client VM
java.specification.version 1.6
java.specification.vendor Sun Microsystems Inc.
java.specification.name Java Platform API Specification
java.class.version 50.0
java.class.path
java.library.path
java.io.tmpdir
java.compiler
java.ext.dirs
os.name Linux
os.arch
os.version
user.name
user.home
user.dir /base/data/home/apps/tetsuya-odaka/1.336203790481156446

サーブレット・コンテキスト

マニュアルで説明されている通り、サーブレットのバージョンは2.5。JettyベースのAppサーバーは、Google App Engine命名されていて、バージョンは1.2.5(Eclipseに導入しているプラグインは、このバージョンと合致するようにupdateがかかるのだろう)。

属性名 属性値
MajorVersion 2
MinorVersion 5
RealPath /base/data/home/apps/tetsuya-odaka/1.336203790481156446/
ServerInfo Google App Engine/1.2.5