月曜日, 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)を使ってアプリが初期化される

月曜日, 3月 08, 2010

hotデプロイなGAE開発!

appenginejsでは、war\WEB-INF\jackconfig.jsの中でlocalとhostedという2つの稼働方法をexportしている。

そして、同ディレクトリにあるweb.xmlの中でenvironmentという名前で指定して利用するのだが、これをlocalにしておけば、ソース修正が(jettyの再起動を行わずとも)反映できるようになる。

なお、jackconfig.jsというファイル、何かの設定ファイルのようだけどなんのことはなく、このファイルが、jack経由でJettyで実行されているだけである(このファイルのexports.app)。

日曜日, 3月 07, 2010

appenginejsでtimezone

blog-gaeでのtimezone設定のやり方が分からず、ずっと時間表示がUTCだった。
調べてみると起動するservletであるjack-servletを最新ソースではこの設定が可能になっていたので差し替え。

ソースを落としたら、D:\work\blog-gaeに展開して、
ant runserver
とするだけで、開発用サーバが8080ポートで上がります。ちなみに、WEB-INF\packages\narwhal\lib\sandbox.jsの6行目にある以下を修正すれば、配置場所は変更可能です(Windowsのディレクトリ記述がうまくパースできないようなので、このファイルは無理に改造しています)。
var zzWork = 'd:\\work\\blog-gae\\war\\WEB-INF\\';

土曜日, 3月 06, 2010

blog-gae

appenginejsのサンプルが動いたので、ソースを上げました。
GAEって、普通にzipファイルを上げたらダウンロードできるようになるんですね。