public void checkPendingProcesses() { try { long now = System.currentTimeMillis(); for (PasswordManagementProcess process : runningProcesses.values()) { try { List<PasswordManagementProcess> toRemove = new ArrayList<PasswordManagementProcess>(); // Ignore valid assertions, they have not expired yet. if (!process.isRunning() || process.getCreationTime() - now > process.getMaxTimeToLive()) { toRemove.add(process); /// registry.unregisterToken(securityDomainName, TOKEN_TYPE, process.getId()); if (log.isDebugEnabled()) log.debug("[checkPendingProcesses()] Process expired : " + process.getProcessId()); } for (PasswordManagementProcess passwordManagementProcess : toRemove) { try { passwordManagementProcess.stop(); } catch (Exception e) { log.debug(e.getMessage(), e); } runningProcesses.remove(passwordManagementProcess.getProcessId()); } } catch (Exception e) { log.warn( "Can't remove process " + e.getMessage() != null ? e.getMessage() : e.toString(), e); } } } catch (Exception e) { log.error("Cannot check pending processes! " + e.getMessage(), e); } }