2017-04-16 80 views
0

我正在使用sparkjava作爲嵌入式REST服務器。我已經使端口號用戶可配置,但是我想處理用戶已經指定了一個已經在使用的端口的情況。如何處理sparkjava端口綁定中的錯誤

文檔的error handling節只處理的處理路線。

有什麼辦法可以解決端口被調用時發生的錯誤,該端口已經被使用或以其他方式失效?

我現在的不雅的解決方案是檢查與服務器套接字之前啓動使用星火類:

try { 
     ServerSocket socket = new ServerSocket(prefs.getListenPort()); 

     socket.close(); 

     MyListener listener = new MyListener(sightingQueue, prefs.getListenPort()); 
    } catch (Exception e) { 
     // port is not valid 
    } 

回答

0

從我的測試中,port()一個已經打開的端口上調用時不拋出任何異常。它只是終止程序。所以我想你的方法是走的路,找不到任何固有的方法。

0

火花2.6.0您可以指定一個InitExceptionHandler:

initExceptionHandler((e) -> System.out.println("Uh-oh")); 

有一個候選版本,你可以測試出:

<dependency> 
    <groupId>com.sparkjava</groupId> 
    <artifactId>spark-core</artifactId> 
    <version>2.6.0.RC0</version> 
</dependency>` 
+0

優秀的,謝謝。我會試試看。 – zorro2b