private void lock()

in plugins/org.apache.karaf.eik.app/src/main/java/org/apache/karaf/eik/app/internal/LockManager.java [143:182]


   private void lock(Properties props) {
       try {
           if (Boolean.parseBoolean(props.getProperty(PROPERTY_USE_LOCK, "true"))) {
               final String clz = props.getProperty(PROPERTY_LOCK_CLASS, PROPERTY_LOCK_CLASS_DEFAULT);
               lock = (Lock) Class.forName(clz).getConstructor(Properties.class).newInstance(props);

               boolean lockLogged = false;

               for (;;) {
                   if (lock.lock()) {
                       if (lockLogged) {
                           LOG.info("Lock acquired.");
                       }

                       setStartLevel(LOCKING_START_LEVEL);

                       for (;;) {
                           if (!lock.isAlive()) {
                               break;
                           }
                           Thread.sleep(lockDelay);
                       }

                       if (bundleContext.getBundle(SYSTEM_BUNDLE_ID).getState() == Bundle.ACTIVE && !exiting.get()) {
                           LOG.info("Lost the lock, stopping this instance ...");
                           setStartLevel(LOCKING_STOP_LEVEL);
                       }
                       break;
                   } else if (!lockLogged) {
                       LOG.info("Waiting for the lock ...");
                       lockLogged = true;
                   }

                   Thread.sleep(lockDelay);
               }
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
   }