WebSocket в сервлете Java (Tomcat 9) без сканирования пути к классам - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь настроить WebSocket в сервлете Java (Tomcat 9) без сканирования пути к классам, но я застрял с этой ошибкой:

 javax.websocket.DeploymentException: Multiple Endpoints may not be deployed to the same path [/test/{accountId}] : existing endpoint was [class probotdev.websocket.Test] and new endpoint is [class probotdev.websocket.Test]
    at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:169)
    at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:232)

Вот мой web.xml:

<web-app version="3.0" metadata-complete="true" ...>
    <absolute-ordering/>
    <listener>
        <listener-class>probotdev.websocket.WebSocket</listener-class>
    </listener>
    ...
</web-app>

и WebSocket класс:

class WebSocket extends ServletContextListener {
    override def contextInitialized(sce: ServletContextEvent): Unit = {
        val container = sce.getServletContext.getAttribute("javax.websocket.server.ServerContainer").asInstanceOf[ServerContainer]

        container.addEndpoint(classOf[Test])
    }
}

и, наконец, Test класс:

@ServerEndpoint("/test")
class Test {
    @OnOpen
    def onOpen(session: Session): Unit = {
        println("Bla!")
    }
    ...
}

1 Ответ

0 голосов
/ 10 октября 2018

Мой web.xml настроен так, что Tomcat не сканирует путь к классам (для сервлетов и т. Д.), Но все еще сканирует содержимое WebSocket .

Мое решение?Просто удалите WebSocket extends ServletContextListener класс.

...