2016-05-06 4 views
0

В настоящее время мы пытаемся внедрить сервер WebSocket с использованием Tyrus, и все прошло хорошо (связь между сервером и клиентом работала хорошо), пока мы не попытались проверить, что произойдет, если инициализация сервера не удалась (например, плохой порт).Tyrus: сбой без старта сервера

Исходный код вызывает SocketException (разрешение отклонено). Исключение записывается в stdout, но сервер продолжает работу, и программа продолжается за пределами метода start().

public void runServer() { 
    // bad port number 
    Server server = new Server("localhost", 10, "/websockets", null, EchoEndpoint.class); 

    try { 
     server.start(); 
     // this line should not be printed 
     System.out.println("Server started"); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Please press a key to stop the server."); 
     reader.readLine(); 
    } catch (Exception e) { 
     System.out.println("Exception caught"); 
     e.printStackTrace(); 
    } finally { 
     server.stop(); 
    } 
} 

Есть ли способ определить, успешно ли запущен сервер?

EDIT: Мы знаем, что мы не можем использовать порт 10 (именно поэтому мы его попробовали). Нам просто нужно проверить, работает ли сервер (каким-то образом поймав исключение). (И мы не хотим проверять его, пытаясь отправить некоторые фиктивные данные с клиентом - это на самом деле не устранит проблему)

ответ

0

Номер вашего порта «10» слишком низок, чтобы использовать его обычным пользователем. Вы должны быть привилегированным пользователем или использовать номер порта более 1024:

Server server = new Server("localhost", 1025, "/websockets", null, EchoEndpoint.class) 
+0

Благодарим за ваш ответ, но я знаю, что этот порт не может быть использован. Вот почему сервер не запускается (и это самый простой способ «имитировать» неудачный старт). Мой вопрос заключался в том, как обнаружить, что сервер не запускался. –