Как обработать ошибку привязки порта sparkjava

Я использую sparkjava в качестве встроенного сервера REST. Я сделал номер порта настраиваемым пользователем, однако я хочу обработать случай, когда пользователь указал порт, который уже используется.

Раздел документации обработка ошибок касается только обработки маршрутов.

Есть ли способ справиться с ошибками, которые возникают, когда 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
    }

person zorro2b    schedule 16.04.2017    source источник


Ответы (2)


Из моего тестирования port() не выдает никаких исключений при вызове на уже открытый порт. Он просто завершает программу. Итак, я думаю, ваш метод - это путь, не смог найти ни одного встроенного метода.

person SHG    schedule 17.04.2017

В 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>`
person tipsy    schedule 24.04.2017