2017-04-16 19 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