0

我想定期监控服务器(tomcat)是否运行。我作为独立应用程序执行此操作。我想定期(每 30 分钟)调用服务器监控程序...如何使用爪哇

4

3 回答 3

1

您应该使用 ExecutorService 和一个任务:

 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);

执行服务

于 2013-04-24T12:30:35.200 回答
0

查看 Nagios。它是一个开源监控服务,还提供 java api。这是监控服务器的最佳方式。

但 Nagios 在实施方面需要付出一些努力。如果这不是您的选择,那么可以选择 ScheduledExecutorservice。

于 2013-04-24T12:32:04.550 回答
0

有很多方法可以做到这一点,但我会推荐 Selenium 来做这种事情。 http://docs.seleniumhq.org/projects/webdriver/

然后,您不仅可以检查服务器是否响应,还可以检查它是否显示了正确的内容。

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();
    }
}
于 2013-04-24T12:34:14.583 回答