001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.util; 020 021import java.util.Timer; 022import java.util.TimerTask; 023import java.util.concurrent.atomic.AtomicLong; 024 025 026/** 027 * WatchDog will issue a warning message 028 * if not canceled on time 029 */ 030@SuppressWarnings("unused") 031public class WatchDog extends TimerTask { 032 String message; 033 String logName; 034 String realm; 035 private static Timer timer = new Timer(true); 036 private static AtomicLong counter = new AtomicLong(0L); 037 public static long PURGE_INTERVAL = 1000L; 038 039 public WatchDog (long duration) { 040 timer.schedule(this, duration); 041 if (counter.incrementAndGet() % PURGE_INTERVAL == 0) 042 timer.purge(); // pro-active purge due to excessive number of timertask cancels. 043 } 044 public WatchDog (long duration, String message) { 045 this(duration); 046 this.logName = "Q2"; 047 this.realm = "watchdog"; 048 this.message = message; 049 } 050 public void setLogName (String logName) { 051 this.logName = logName; 052 } 053 public void setRealm (String realm) { 054 this.realm = realm; 055 } 056 public void run () { 057 if (message != null) 058 Log.getLog (logName, realm).warn (message); 059 } 060}