猿问

没有类路径扫描的 Java Servlet (Tomcat 9) 中的 WebSocket

我试图在没有类路径扫描的情况下在 Java Servlet (Tomcat 9) 中设置 WebSocket,但我遇到了这个错误:


 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!")

    }

    ...

}


白板的微信
浏览 353回答 1
1回答

慕运维8079593

我web.xml的配置使 Tomcat 不扫描类路径(对于 servlet 等),但它仍在扫描 WebSocket 内容。我的解决方案?只需删除WebSocket extends ServletContextListener该类。
随时随地看视频慕课网APP

相关分类

Java
我要回答