2013-04-24 67 views
0

我想監視服務器(tomcat)是否運行或沒有定期運行。我是以獨立應用程序的形式運行。我想每隔30分鐘定期調用一次服務器監視程序。 。如何通過使用Java使用java監視線程

+2

使用'Executors.newSingleThreadedScheduledExecutor'和'schedule'它的任務。 – 2013-04-24 12:29:40

+0

然後使用Apache HTTP客戶端庫調用Tomcat服務器,接收響應並實現服務器是否正在運行。 – 2013-04-24 12:31:42

回答

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

ExecutorService

0

檢查出的Nagios。它是一個開源的監控服務,並且還提供了Java API。這是監視服務器的最佳方式。

但是Nagios在實施方面需要一些努力。如果這不是你的選擇,那麼是去ScheduledExecutorservice。

0

有很多方法可以做到這一點,但我會推薦硒這種事情。 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(); 
    } 
} 
+0

也使用'WebDriver driver = new HtmlUnitDriver();'如果你不想安裝瀏覽器來運行Selenium – 2013-04-24 12:36:32