背景:
我编写了一个基于 java swing 的客户端服务器应用程序。服务器是一个弹簧容器,有一堆服务。服务器-客户端通过套接字上的序列化对象进行通信。服务器为每个客户端会话生成一个新线程,并在通信期间维护会话映射。
我正在向 JVM 添加一个关闭挂钩
在我的 GUI 中,我有一个“停止服务器”按钮,用于删除用户会话并清理。
问题:这一切都很好,但现在我想让客户端知道服务器是否正在重新启动或停止。关于如何解决这个问题的任何想法?
谢谢。
背景:
我编写了一个基于 java swing 的客户端服务器应用程序。服务器是一个弹簧容器,有一堆服务。服务器-客户端通过套接字上的序列化对象进行通信。服务器为每个客户端会话生成一个新线程,并在通信期间维护会话映射。
我正在向 JVM 添加一个关闭挂钩
在我的 GUI 中,我有一个“停止服务器”按钮,用于删除用户会话并清理。
问题:这一切都很好,但现在我想让客户端知道服务器是否正在重新启动或停止。关于如何解决这个问题的任何想法?
谢谢。
您可能有一种方法可以从服务器接收回复。让该方法在单独的线程中运行,并在循环中永久等待来自服务器的消息。当服务器停止时,连接关闭,接收方法得到一个异常。
正如Alexei所说,您可以等待客户端抛出异常,然后自动说这是因为服务器正在关闭或已停止。但是,这可能不是最好的解决方法,除非您确定这将是您的服务器将出现的唯一错误。
我建议使用向所有客户端发送特定消息,告诉客户端服务器正在被故意停止。当客户端收到特定消息时,他们可以关闭他们的套接字。请参阅 Sun 的Knock Knock 服务器示例。