我正在尝试使用带有tyrus 1.8.2的程序化端点创建一个websocket服务器。我发现了构造函数:
public Server(String hostName,
int port,
String contextPath,
Map<String,Object> properties,
Class<?>... configuration)
不接受实现ServerEndpointConfig的类。当我尝试它抛出一个DeploymentException“类XXX不是ServerApplicationConfig后代也没有@ServerEndpoint注释。”
由于我使用的是程序化端点(未注释),这似乎意味着我必须实现ServerApplicationConfig。这与websocket API文档相反。
因此,当我实现ServerApplicationConfig时,我不再获得此异常,并且服务器似乎没有问题地启动,但它返回404到我认为有效的连接尝试(正确的主机,端口和上下文路径。)
我错过了什么?
附加信息:我扩展了TyrusServerEndpointConfigurator并为modifyHandshake()方法提供了覆盖。服务器返回404,而没有调用此方法。
答案 0 :(得分:0)
问题结果是对Tyrus构建上下文路径的方式感到困惑。传递给Server构造函数的路径,以及ServerEndpointConfig getPath()方法返回的路径。它们连接在一起形成完整的上下文路径。
因此,如果在Server构造函数中指定“/ server”,在ServerEndpointConfig.getPath()中指定“/ endpoint”,则服务器将接受“/ server / endpoint”上的连接请求。