我想在websocket连接之间共享一些信息。共享数据有点复杂,所以我不能使用EndpointConfig.getUserProperties()
。我想扩展ServerEndpointConfig.Configurator
并添加自己的数据结构。(我不想覆盖其他方法,例如getEndpointInstance
)。问题是我应该使用线程安全的数据结构吗?或者,我可以使用任何数据结构,并且Web套接字容器将确保以安全的方式访问我的ServerEndpointConfig.Configurator
实例。
最佳答案
感觉太黑了。
配置程序应该是不可变的(检查Tyrus configurator for example),而不是要用作共享点。
在Java EE环境中,有一种更好的方法。
Websocket规范为CDI / EJB提供了一些支持。您可以注入@ApplicationScoped
或@Singleton
bean并使用它共享数据(必须同步bean)。
有一个来自Tyrus samples on Github的共享计数器示例