2011年6月7日火曜日

Google App Engine (GAE) の runserver 停止

ども!ご無沙汰してます。

近頃は受託案件に加え、モバゲー向けに自社製ゲームを出したりしてましたが、6月2日にサービスを終了しました。
時間ができたら開発に至った経緯や失敗談など書いていこうと思います。



さて、最近は Google App Engine Java で試験的に開発などを行っています。
ビルドは Windows にて ant を使っていますが、そこで遭遇した問題を 1つ解決したのでメモ書きです。



ant でのビルドと動作確認は runserver タスクを実行しますが、ドキュメント通りに Ctrl+C でプロセスを落としても Jetty の java.exe が残ったままになる問題があります。

残ったままでは次の変更が反映されないので、タスクマネージャで java.exe を手動で終了させます。
めんどくさいので以下のように runserver を定義することで解決しました。

変更前
<target name="runserver" depends="datanucleusenhance"
description="Starts the development server.">
<dev_appserver war="war" />
</target>


変更後
<target name="runserver" depends="datanucleusenhance"
description="Starts the development server.">
<java classname="com.google.appengine.tools.development.DevAppServerMain"
classpath="${appengine.tools.classpath}"
fork="true" failonerror="true">
<jvmarg value="-javaagent:${appengine.sdk.home}/lib/agent/appengine-agent.jar" />
<arg value="--port=8080"/>
<arg value="--address=localhost"/>
<arg value="war"/>
</java>
</target>


Google App Engine 標準の runserver は dev_appserver マクロを呼び出し、com.google.appengine.tools.KickStart を起動していますが、これをすっ飛ばして
com.google.appengine.tools.development.DevAppServerMain を直接起動します。

キモは -javaagent ですね。

これで少し快適に開発ができるようになるはず。。