Question

I want to monitor servers(tomcat) running or not at regular interval.I'm doing this as stand alone application.I want to call the server monitor program at regular interval(every 30 min )...How to do this by using java

Was it helpful?

Solution

You should be using ExecutorService and a task:

 class MyTask implements Runnable {
     @Override
         public void run() {
             //do your work here
         }
 }


 ScheduledExecutorService service = Executors.newScheduledThreadPool(NUMBER_OF_THREADS);
 service.scheduleAtFixedRate(new MyTask(), 0, 30, TimeUnit.MINUTES);

ExecutorService

OTHER TIPS

CHeck out Nagios. Its an open source monitoring service and also provides java api's. This is the best way to monitor servers.

But Nagios will need some effort in terms of implementation. If that is not your choice then yes go for ScheduledExecutorservice.

There are many ways you could do this, but I would recommend Selenium for this kind of thing. http://docs.seleniumhq.org/projects/webdriver/

You can then not only check to see if the server responds, but also check to see if it displayed the correct content.

http://docs.seleniumhq.org/docs/03_webdriver.jsp#introducing-the-selenium-webdriver-api-by-example

package org.openqa.selenium.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Selenium2Example  {
    public static void main(String[] args) {
        while (1){ 
            test();
            Thread.sleep(30L*60L*1000L); //sleep for 30 mins
        }
    }

    public static void test(){


        // Create a new instance of the Firefox driver
        // Notice that the remainder of the code relies on the interface, 
        // not the implementation.
        WebDriver driver = new FirefoxDriver();

        // And now use this to visit Google
        driver.get("http://www.google.com");
        // Alternatively the same thing can be done like this
        // driver.navigate().to("http://www.google.com");

        // Find the text input element by its name
        WebElement element = driver.findElement(By.name("q"));

        // Enter something to search for
        element.sendKeys("Cheese!");

        // Now submit the form. WebDriver will find the form for us from the element
        element.submit();

        // Check the title of the page
        System.out.println("Page title is: " + driver.getTitle());

        // Google's search is rendered dynamically with JavaScript.
        // Wait for the page to load, timeout after 10 seconds
        (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return d.getTitle().toLowerCase().startsWith("cheese!");
            }
        });

        // Should see: "cheese! - Google Search"
        System.out.println("Page title is: " + driver.getTitle());

        //Close the browser
        driver.quit();
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top