如何处理sparkjava端口绑定中的错误

时间:2017-04-16 04:26:19

标签: exception-handling spark-java

我使用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
    }

2 个答案:

答案 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>`