月曜日, 3月 22, 2010

appenginejsのアプリ初期化過程

最初のリクエストが飛んできたときに、appenginejsに同梱されているJSGIServlet.javaで行われていることをまとめておきます。
  • コンテキストが作られる
  • narwhalの(engine個別の/ここではrhinoの)bootstrap.jsが実行される
     ここでNARWHAL_HOMEはWEB-INF/packages/narwhalと決め打ち
     その中で(NARWHAL_HOMEの)narwhal.jsが実行され環境が作られる
  • jackのservletハンドラ(proessメソッド)がrequireされる
     アプリは(serviceメソッドから呼ばれ)このハンドラ内で実際に実行される
  • アプリのWEB-INF/src/jackconfig.jsがrequireされる
     (web.xmlの)appとenvironmentに合わせた変数がexportされる
  • 上記exportされた変数(environmentとapp)を使ってアプリが初期化される