/******************************************************************************* * Copyright 2014 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. *******************************************************************************/ package at.gv.egovernment.moa.id.auth; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import at.gv.egiz.eaaf.core.api.IGarbageCollectorProcessing; import at.gv.egovernment.moa.logging.Logger; @Service("MOAGarbageCollector") @EnableScheduling public class MOAGarbageCollector implements Runnable { @Autowired ApplicationContext context; private static final long INTERVAL = 24 * 60 * 60 * 1000; // 24 hours //private static final long INITAL_DELAY = 12 * 60 * 60 * 1000; // 12 hours private static final long INITAL_DELAY = 2 * 60 * 1000; // 12 hours // private static final List processModules = // new ArrayList(); @Scheduled(fixedRate = INTERVAL, initialDelay = INITAL_DELAY) public void run() { Map processModules = context.getBeansOfType(IGarbageCollectorProcessing.class); if (processModules != null) { Iterator> interator = processModules.entrySet().iterator(); while (interator.hasNext()) { try { interator.next().getValue().runGarbageCollector(); } catch (Throwable e1) { Logger.warn("Garbage collection FAILED in some module.", e1); } } } } // /** // * Add a module to MOA internal garbage collector. Every module is executed once a day // * // * @param modul Module which should be executed by the garbage collector. // */ // public static void addModulForGarbageCollection(IGarbageCollectorProcessing modul) { // processModules.add(modul); // // } // public static void start() { // // start the session cleanup thread // Thread configLoader = new Thread(new MOAGarbageCollector(), "MOAGarbageCollector"); // configLoader.setName("MOAGarbageCollectorr"); // configLoader.setDaemon(true); // configLoader.setPriority(Thread.MIN_PRIORITY); // configLoader.start(); // } }