/* * jPOS Project [http://jpos.org] * Copyright (C) 2000-2017 jPOS Software SRL * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.jpos.ee.status; import java.net.Socket; import java.io.IOException; import org.jpos.core.Configurable; import org.jpos.core.Configuration; import org.jpos.core.ConfigurationException; import org.jpos.util.Log; public class Ping extends Log implements MonitorTask, Configurable { String host; int port = 7; // code taken from Alireza's blog // http://jroller.com/page/alireza/20050601 public String checkService () { boolean rc = false; String detail = ""; long start = System.currentTimeMillis(); try { Socket socket = new Socket(host, port); socket.setSoLinger (true, 0); socket.close(); rc = true; } catch (IOException e) { String msg = e.getMessage().toUpperCase(); if (msg.indexOf ("CONNECTION REFUSED") >= 0) { rc = true; } else { rc = false; detail = " " + msg; } } long elapsed = System.currentTimeMillis() - start; return (rc ? Status.OK : Status.WARN) + detail + " time=" + elapsed + "ms"; } public void setConfiguration (Configuration cfg) throws ConfigurationException { host = cfg.get ("host", null); if (host == null) throw new ConfigurationException ( "host property has not been specified" ); port = cfg.getInt ("port", 7); } }