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中找到更多信息。

09-30 13:25