2015-10-05 145 views
0

我爲某些Web服務創建了JAXRS SERVER。服務器工作正常,但我需要添加一項新功能,以便隨時檢查服務器狀態。因此,如果服務器啓動,我應該返回一個類似running的消息,並且如果消息類似於downJAXRS服務器檢查狀態

我至今實現:

public class Server 
{ 

    public static void main(final String[] args) 
    { 

     final JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean(); 

     final SubscriptionService subscriptionService = 
      new SubscriptionService(SubscriptionRepo.getRepo()); 
     final SystemService systemservice = new SystemService(); 

     serverFactory.setResourceProvider(new SingletonResourceProvider(subscriptionService)); 
     serverFactory.setResourceProvider(new SingletonResourceProvider(systemservice)); 

     serverFactory.setAddress("http://localhost:8888"); 

     serverFactory.setProvider(JacksonJsonProvider.class); 
     serverFactory.create(); 
    } 
} 

我也創建了我想要得到狀態的服務類:

public class SystemService 
{ 

    @GET 
    @Path("/systemstatus") 
    public Response getSystemStatus() 
    { 
     return Response.status(Status.OK.getStatusCode()); 
    } 
} 

我真的不知道我該如何返回,如果狀態系統正在運行或不運行。 任何人都可以幫助我瞭解如何檢查服務器狀態的一些想法嗎?

+0

那麼,如果服務器關閉,您可能會收到404 HTTP響應。因此,您可以在HTTP請求後檢查響應代碼:如果您得到200(或2xx)服務器正在運行,如果您得到404(或4xx或5xx),則服務器已關閉。 – javatutorial

+0

這沒什麼相關性。當我請求一個不存在的URI時,我也可以得到一個404響應。但是服務器還在運行...... – dres

+0

好吧,如果你擁有你的服務器,404肯定意味着服務器關閉了,因爲你的URI不會改變,你只會檢查那個URI的響應...或者我錯過了什麼? :) – javatutorial

回答

0

當您考慮嘗試從Web服務獲取響應時,您的任務會崩潰,該服務部署在無響應的Web服務器上。您究竟如何設想您的Web服務將這些信息傳達出去(通過一致的HTTP狀態,不能少),它不可達?你最初怎麼去?當容器下來,你的服務是不是在一個位置,在連接相關SocketException和可能HttpRetryException的各種口味返回任何有意義的信息給客戶端

棒時間考驗的異常處理,在一些案例。這就是當你的服務器沒有啓動時你會得到的:SocketException。您的REST服務在這裏沒有權力。