簡體   English   中英

Java Servlet(Tomcat 9)中的WebSocket無需類路徑掃描

[英]WebSocket in Java Servlet (Tomcat 9) without classpath scanning

我試圖在不進行類路徑掃描的情況下在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!")
    }
    ...
}

配置了我的web.xml ,以便Tomcat不掃描類路徑(用於servlet等),但仍在掃描WebSocket內容

我的解決方案? 只需刪除WebSocket extends ServletContextListener類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM