使用具有多个websocket连接的websocket端点与Tomcat(和Glassfish)并发

时间:2019-03-28 17:53:09

标签: java tomcat websocket concurrency glassfish

我正在将Web应用程序部署在带有注释的websocket端点的Apache Tomcat 8.5(和Glassfish 4.1)上。我需要了解有关注释方法onOpen()onClose()onMessage()onError()在并发方面的见解:

  • 在方法onOpen()尚未完成执行时可以调用onOpen()吗?
  • 在方法onClose()尚未完成执行时可以调用onClose()吗?
  • 在方法onMessage()尚未完成执行时可以调用onMessage()吗?
  • 在方法onError()尚未完成执行时可以调用onError()吗?
  • 可以调用任何方法onOpen()onClose()onMessage()onError(),而可以调用任何其他方法onOpen()onClose(),{{1 }},onMessage()尚未执行完毕?

还有一个更受约束的情况:上面列出的五个问题是什么,如果我们只谈论相同的onError()对象,这意味着可以使用具有特定{{1} }实例被调用,而已经使用相同的session实例调用了on方法的情况了?

假设有几个用户通过websocket并行连接,断开连接,通信或关闭连接。此外,没有额外使用诸如session之类的手动锁定机制。

  • 哪种方法可以被哪个方法“打断”?
  • 如果几个onsessionsynchronizedonOpen()事件未决怎么办?这会阻止其他方法吗?

以下,我提供了一个代码段:

onClose()

请随时通过websocket启发有关此并发主题的其他信息。

我可以观察到,如果许多用户通过连接到服务器来触发onMessage()方法,那么另一位发送websocket消息并触发方法onError()的用户在所有{{1 }}通话结束。

进一步阅读:

0 个答案:

没有答案