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();
}
}