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