Affects: 6.0.0-RC3

java.lang.NoSuchMethodError: 'void org.apache.tomcat.websocket.server.WsServerContainer.doUpgrade(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, jakarta.websocket.server.ServerEndpointConfig, java.util.Map)'
    at org.springframework.web.socket.server.standard.TomcatRequestUpgradeStrategy.upgradeInternal(TomcatRequestUpgradeStrategy.java:73) ~[spring-websocket-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.socket.server.standard.AbstractStandardUpgradeStrategy.upgrade(AbstractStandardUpgradeStrategy.java:136) ~[spring-websocket-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.socket.server.support.AbstractHandshakeHandler.doHandshake(AbstractHandshakeHandler.java:289) ~[spring-websocket-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.socket.sockjs.transport.handler.WebSocketTransportHandler.doHandshake(WebSocketTransportHandler.java:137) ~[spring-websocket-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.socket.sockjs.transport.TransportHandlingSockJsService.handleRawWebSocketRequest(TransportHandlingSockJsService.java:216) ~[spring-websocket-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.socket.sockjs.support.AbstractSockJsService.handleRequest(AbstractSockJsService.java:441) ~[spring-websocket-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler.handleRequest(SockJsHttpRequestHandler.java:134) ~[spring-websocket-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:52) ~[spring-webmvc-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1080) ~[spring-webmvc-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:973) ~[spring-webmvc-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1003) ~[spring-webmvc-6.0.0-RC3.jar:6.0.0-RC3]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:895) ~[spring-webmvc-6.0.0-RC3.jar:6.0.0-RC3]
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.1.jar:6.0]

upgradeHttpToWebSocket(Object, Object, ServerEndpointConfig, Map<String, String>) that was added in Tomcat 10.0 should be used instead.

Comment From: wilkinsona

I've been testing Boot against a local build of Framework that contains this change and it seems to do the trick.

Comment From: jhoeller

@wilkinsona Looks like we had an old code path just for Tomcat 9.0 compatibility there which obviously isn't relevant anymore. Your change looks straightforward. Could you turn this into a PR? Otherwise we can also manually upgrade the code accordingly.

Comment From: wilkinsona

Closing in favor of https://github.com/spring-projects/spring-framework/pull/29434.