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 |