GAE/J使うならこの設定をしておけ!
(自分的に)ほぼ必須となる設定ファイルのまとめ。
ていうか、リファレンス読めばいーんだけどさ
1.sessionを有効にする & クリアの設定をする
Javaでsession使わないケースなんてあるのか?
appengine-web.xml に 下記を追加
<sessions-enabled>true</sessions-enabled>
GAE/Jでsessionを使う場合、このままだとDatastoreにsession情報が残ったままなので定期的にクリアするcronを設定する
web.xml に 下記を追加
<servlet> <servlet-name>_ah_sessioncleanup</servlet-name> <servlet-class>com.google.apphosting.utils.servlet.SessionCleanupServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>_ah_sessioncleanup</servlet-name> <url-pattern>/_ah/sessioncleanup</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>session-cleanup</web-resource-name> <url-pattern>/_ah/sessioncleanup</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint>
cron.xml に 下記を追加
この場合、12時間おきに期限切れsessionをクリアしてくれる。
<cron> <url>/_ah/sessioncleanup?clear</url> <description>Clean up sessions</description> <schedule>every 12 hours</schedule> </cron>
2.プリコンパイルを有効にする
Deploy時にプリコンパイルしてくれる。何もしないと初回アプリケーション起動時にコンパイルされる。
速度的に30%程度早くなるらしい。
将来のリリースではデフォルトで有効になるみたい
appengine-web.xml に 下記を追加
<precompilation-enabled>true</precompilation-enabled>
3.静的リソースを指定する
静的リソース(画像やJavascript、CSSファイル)を指定しておくと、専用のサーバーに配置され
読込が高速化するらしい
appengine-web.xml に 下記の用にパスやファイルを追加
ワイルドカードや正規表現もOK
<static-files> <include path="/css/**.css"/> <include path="/js/**.js"/> <include path="/img/**.png"/> <include path="/img/**.gif"/> <include path="/img/**.jpg"/> <include path="/favicon.ico"/> </static-files>
4.管理コンソールにAPI呼び出し履歴、時間表示画面を追加
CPU使用時間やDatastoreのQuotaを見る事のできる管理ツールにリクエスト毎/API毎の処理時間が見える
管理画面を追加します。これでボトルネックが分かる!
追加すると管理コンソールのメニューの下にCustom というのが追加されます。
尚、この管理画面を開くときにはもう一回認証が必要になります。
まずは統計情報を取得するフィルタを設置
web.xml に 下記のようにフィルタとサーブレットを追加
<servlet> <servlet-name>appstats</servlet-name> <servlet-class> com.google.appengine.tools.appstats.AppstatsServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>appstats</servlet-name> <url-pattern>/appstats/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <url-pattern>/appstats/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <filter> <filter-name>appstats</filter-name> <filter-class> com.google.appengine.tools.appstats.AppstatsFilter </filter-class> <init-param> <param-name>logMessage</param-name> <param-value>Appstats available: /appstats/details?time={ID}</param-value> </init-param> </filter> <filter-mapping> <filter-name>appstats</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
次に appengine-web.xml に 下記のように追加
<admin-console> <page name="appstats" url="/appstats/"/> </admin-console>
これでばっちり!
・参考URL
http://code.google.com/intl/ja/appengine/docs/java/config/appconfig.html
http://d.hatena.ne.jp/hidemon/20100327/1269670906
http://blog.livedoor.jp/cbnanashi/archives/1045958.html
http://www.tdtsh.com/blog/archives/614