2010年9月27日 0:00

apppengine変数生存期間メモ

ちょっと気になったので調べてみました(下のソースはいろいろはしょってます)

Filter

public class HogeFilter  implements Filter{
    private static final Log log = LogFactory.getLog(HogeFilter.class);

    public void init(FilterConfig config) throws ServletException {
        log.info("Initialized");
    }

    public void destroy() {
        log.info("Destroyed");
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    }
}

  • spin up直後はinit()→doFilter()
  • 2回目以降はdoFilter() のみ
  • spin down時にはdestroy() は呼ばれない模様

 

任意のクラス(ServiceとかController)

public class FooService {
    private static final Log log = LogFactory.getLog(FooService.class);

    static{
        log.info("Initialized");
    }

    public void execute(){
    }
}

  • staticフィールドのインスタンスはspin up直後にのみ初期化される
    (上記のようにstaticイニシャライザ内でログをとって調べたので間違いないはず)
  • spin down時にstaticフィールドのインスタンスは破棄され、次のspin up時にまた初期化される

その他

  • デプロイ直後は必ずspin down→spin upの流れ(ログ見てるとそんな感じ)
  • ここまで書いておきながら、spin up/downを除けば普通のWebアプリと変わらないような気がしてきたw

 

ひょっとしたら自分の解釈が間違ってる可能性があるので誰か補足よろしくお願いします

2010年9月 7日 22:45

マジ勘弁ボットHP

HPとかマジ勘弁w

マジ勘弁ボット
http://majikanbenw.appspot.com/

ボットの説明やマジ勘弁した対象のランキングとかを置く予定