@Override
  public void contextInitialized(ServletContextEvent sce) {
    try {
      SystemConfig.initParam();

      TagOperationHelper.setOtsClient(SystemConfig.getOtsTagClient());
      OtsUserHelper.setOtsClient(SystemConfig.getOtsSharedClient());
      UserOperationHelper.setOtsClient(SystemConfig.getOtsSharedClient());

      // 初始化Redis连接池
      RedisPool.initRedisPool();
      RedisLogAppender.init();

      WechatConfig.initParam();
      PublicAccountFactory.initConfig();
      TemplateFactory.initConfig();
      // 初始化freemarker
      initFreeMarker(sce);

      GeoLocationHelper.init();

      // 同步微信access token 定时任务
      AppExecutors.getScheduledExecutor()
          .scheduleAtFixedRate(
              new RefreshAccessTokenTask(),
              getRefreshWechatTokenScheduledInitDelay(),
              WechatConstants.refreshTokenTaskPeriod,
              TimeUnit.MILLISECONDS);

      // 同步活动定时任务
      AppExecutors.getScheduledExecutor()
          .scheduleAtFixedRate(new SyncMessageThread(), 5, 60, TimeUnit.SECONDS);

      // 处理标签和用户锁线程
      AppExecutors.getScheduledExecutor()
          .scheduleAtFixedRate(new EtraceSelfMessageThread(), 10, 60, TimeUnit.SECONDS);

    } catch (Throwable e) {
      e.printStackTrace();
    }
  }