1 /* 2 * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved 3 * 4 * This file is part of Resin(R) Open Source 5 * 6 * Each copy or derived work must preserve the copyright notice and this 7 * notice unmodified. 8 * 9 * Resin Open Source is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * Resin Open Source is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty 17 * of NON-INFRINGEMENT. See the GNU General Public License for more 18 * details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with Resin Open Source; if not, write to the 22 * Free SoftwareFoundation, Inc. 23 * 59 Temple Place, Suite 330 24 * Boston, MA 02111-1307 USA 25 * 26 * @author Scott Ferguson 27 */ 28 29 package com.caucho.resources; 30 31 import com.caucho.config.ConfigException; 32 import com.caucho.log.Log; 33 import com.caucho.util.L10N; 34 35 import javax.annotation.PostConstruct; 36 import javax.annotation.Resource; 37 import java.util.concurrent.Executor; 38 import java.util.logging.Logger; 39 40 /** 41 * The task resource starts a backgroun task on initialization. 42 * intervals. 43 */ 44 public class TaskResource { 45 private static final L10N L = new L10N(TaskResource.class); 46 private static final Logger log = Log.open(TaskResource.class); 47 48 @Resource 49 private Executor _executor; 50 51 private Runnable _work; 52 53 /** 54 * Sets the work task. 55 */ 56 public void setWork(Runnable work) 57 { 58 _work = work; 59 } 60 61 /** 62 * Initialization. 63 */ 64 @PostConstruct 65 public void init() 66 throws ConfigException 67 { 68 if (_work == null) 69 throw new ConfigException(L.l("TaskResource needs a <work> task.")); 70 } 71 72 /** 73 * Starting. 74 */ 75 public void start() 76 { 77 _executor.execute(_work); 78 } 79 } 80