第五章、WebSocket异常处理和线程

5.1、线程注意事项

  • WebSocket API实现可以采用多种线程策略,以提供可伸缩的实现。该规范旨在允许一系列策略,但是,该实现必须满足某些线程要求,以便为开发人员为其应用程序提供一致的线程环境
  • 除非由具有不同生命周期的Java EE组件提供支持(请参见第7章),否则容器必须对每个对等方使用唯一的端点实例,[WSC-5.1-1]在所有情况下,实现均不得一次在每个对等方法中调用具有多个线程的端点实例。[WSC-5.1-2]在open方法完成之间,实现可能无法再端点上调用close方法[WSC-5.1-3]
  • 这保证了一个websocket端点实例在每个对等方不会一次被多个容器线程调用[WSC-5.1-4]
  • 如果实现决定部分处理传入消息,则必须确保依次调用相应的onMessage()调用,并且不要与同一消息的一部分或与其他消息进行交织在一起[WSC-5.1.5]

5.2、异常处理

  • 规范定义有三种分类异常(检查和非检查Java异常)

5.2.1、部署异常

  • 这些是在部署包含websocket端点的应用程序期间引发的错误,其中一些错误是由于在应用程序部署期间发生容器故障而引起的,例如,容器可能没足够的计算资源来按规定的部署应用程序。在这种情况下,容器必须在部署过程中向开发人员提供有用的错误的消息。[WSC-5.2.1-1]其他错误是由Websocket应用程序格式错误而引起的,第4章提供了一些格式错误的websocket端点示例,在这种情况下,容器必须在部署过程中向部署者提供信息错误消息。[WSC-5.2.1-2]
  • 在这两种情况下,在部署过程中引发的部署错误都必须停止应用程序的部署,必须在服务中删除在引发错误指明部署的任何格式正确的端点,并且容器不能再部署该应用程序的其他WebSocket端点,即使它们是有效的。[WSC-5.2.1-3]
  • 如果部署错误在开发人员的程序控制下发生,例如,当使用WebSocketContainer API部署客户端端点时,容器必须使用DeploymentException实例将部署错误报告给开发人员。[WSC-5.2.1-4]在这种情况下,容器可以选择错误消息的准确措辞。
  • 如果部署错误是在由实施管理的情况下发生的,例如,由于部署WAR文件,而由于扫描WAR文件而导致容器部署了端点,则必须将部署错误报告给部署者通过实施作为特定于容器的部署过程的一部分[WSC-5.2.1-5]

5.2.2、WebSocket应用程序代码中的错误

  • 在websocket端点运行期间出现的所有错误都必须由websocket的实现来捕获。[WSC-5.2.2-1]这些错误的示例包括由端点使用的Decoders生成的检查异常,在端点使用的消息处理代码中生成的运行时错误。如果websocket端点提供了错误处理方法,(对于编程端点,则通过实现onError()方法)对于带注解的端点,则通过使用@OnError注解),实现必须带错误数据调用错误处理方法。[WSC-5.2.2-2]
  • 如果开发人员尚未在正在生成错误的端点上提供错误处理方法。则表明开发人员不希望处理此类错误,在这些情况下,容器必须使用此信息可用于以后的分析,例如通过记录它。[WSC-5.2.2-3]
  • 如果端点本身的错误处理方法正在生成运行时错误,则容器必须使用此信息可用于以后的分析[WSC-5.2.2-4]

5.2.3、容器和底层连接中的错误

  • 端点运行期间可能会发生各种各样的运行时错误。这些可能包括断开的基础连接,偶尔的通信错误(处理传入和传出的消息)或与对等方通信的致命错误,实施人员或其管理员认为此类错误对对端点的正常运行具有致命的影响,可能会关闭端点连接,从而尝试使用onClose()方法通知两个参与者。容器将此类错误判定为对端点的正常运行不重要,可以使端点继续运行,但必须在消息处理中报告该错误,作为发送错误之一返回的已检查异常,或者通过传递SessionException到端点的错误处理方法(如果存在),或者通过记录错误以供以后分析。[WSC-5.2.3-1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值