我使用sparkjava作为嵌入式REST服务器。我已经使端口号用户可配置,但是我想处理用户指定了一个已经在使用的端口的情况。
文档的error handling部分仅涉及处理路线。
有没有办法处理使用已经在使用的端口调用port()时出现的错误?否则无效?
我目前不优雅的解决方案是在启动使用Spark的类之前检查服务器套接字:
try {
ServerSocket socket = new ServerSocket(prefs.getListenPort());
socket.close();
MyListener listener = new MyListener(sightingQueue, prefs.getListenPort());
} catch (Exception e) {
// port is not valid
}
答案 0 :(得分:0)
从我的测试中,port()
在已经打开的端口上调用时不会抛出任何异常。它只是终止程序。所以我猜你的方法是要走的路,找不到任何固有的方法。
答案 1 :(得分:0)
使用Spark 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>`