受this thread的熏陶,我正在尝试这样做:
@ServerEndpoint(... configurator = GetHttpSessionConfigurator.class)
没有@ServerEndpoint注释,但是具有以下代码:
ServerEndpointConfig endpointConfig = ServerEndpointConfig.Builder.create(MyHandler.class, uri).build();
javax.websocket.server.ServerContainer.addEndpoint(endpointConfig);
由于找不到任何“ setConfigurator”方法,因此检查了ServerEndpointConfig的源,发现配置(.tor)是由
ServiceLoader.load(Configurator.class)
因此,我创建了meta-inf \ services \ javax.websocket.server.ServerEndpointConfig $ Configurator文件,并添加了一行以指向我的GetHttpSessionConfigurator(在1中定义)类。该文件已加载(我使用Process Monitor进行了检查),但是使用了Tomcat的DefaultServerEndpointConfig。
有人知道这个设置有什么问题吗?
最佳答案
在.build()
之前,您可以放入.configurator(new YourEndPointConfigurator())
因此,对于您的代码,您可以执行以下操作:
ServerEndpointConfig endpointConfig = ServerEndpointConfig.Builder
.create(MyHandler.class, uri)
.configurator(new ChatServerEndPointConfigurator(new GetHttpSessionConfigurator())
.build();
可以在
ServerEndpointConfig.Builder
docs中找到更多信息。