/** @see org.apache.axis2.service.Lifecycle#init(org.apache.axis2.context.ServiceContext) */
  public void init(ServiceContext sc) {
    synchronized (initialized) {
      if (!initialized.booleanValue()) {
        AxisService axisService = sc.getAxisService();

        String propertiesPath =
            (String) axisService.getParameterValue("karma.properties.file.path");

        // remove potential whitespace introduced in karma.properties
        if (propertiesPath != null) propertiesPath = propertiesPath.trim();

        ServiceLauncher.start(propertiesPath);

        log = Logger.getLogger(KarmaServiceSkeleton.class);

        if (log.isDebugEnabled()) log.debug("in init");

        ingester = ServiceLauncher.getIngester();
        querier = ServiceLauncher.getQuerier();

        try {
          ingester.resetUnfinishedNotifications();
        } catch (IngestException e) {
          log.error("Error resetting unfinished notifications", e);
        }

        initialized = Boolean.TRUE;
      }
    }
  }
 /** @see org.apache.axis2.service.Lifecycle#destroy(org.apache.axis2.context.ServiceContext) */
 public void destroy(ServiceContext sc) {
   log.debug("in destroy");
   initialized = Boolean.FALSE;
   ServiceLauncher.shutdown();
 }