Tyrus:静默服务器启动失败

Posted

技术标签:

【中文标题】Tyrus:静默服务器启动失败【英文标题】:Tyrus: silent server start failure 【发布时间】:2016-05-06 09:26:12 【问题描述】:

我们目前正在尝试使用Tyrus 实现 WebSocket 服务器,并且一切正常(服务器-客户端通信正常),直到我们尝试测试如果服务器初始化失败(例如端口错误)会发生什么。

底层代码抛出 SocketException(权限被拒绝)。异常被写入标准输出,但服务器继续,程序继续超出 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();
    

有没有办法检测服务器是否启动成功?

编辑:我们知道我们不能使用端口 10(这就是我们尝试它的原因)。我们只需要检查服务器是否正在运行(通过某种方式捕获异常)。 (而且我们不想通过尝试向客户端发送一些虚拟数据来测试它——这并不能真正解决问题)

【问题讨论】:

【参考方案1】:

您的端口号“10”太低,普通用户无法使用。您必须是特权用户或使用大于 1024 的端口号:

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

【讨论】:

谢谢你的回答,但我知道这个端口不能用。这就是服务器不启动的原因(这是“模拟”启动失败的最简单方法)。我的问题是如何检测服务器没有启动。

以上是关于Tyrus:静默服务器启动失败的主要内容,如果未能解决你的问题,请参考以下文章

iOS 仪器,无法在 iPad 上启动任何应用程序。 Instruments 静默失败

tyrus websocket ssl 握手失败

Wix静默安装MSI我们可以停止创建目录吗

运行 CRON 时,'require' 静默失败

Python SQLAlchemy+Threading 静默失败

SQL Server 服务由于登录失败而无法启动怎么办