Поддержка веб-сокетов для Microsoft IIS (перенаправитель ISAPI + AJPv13) + Tomcat 8 - PullRequest
0 голосов
/ 12 июня 2019

В одном из наших проектов мы хотели начать использовать веб-сокет в приложении с весенней загрузкой и хотели узнать, поддерживается ли веб-сокет в нашей модели развертывания. Мы используем IIS в качестве веб-сервера, который настроен на использование перенаправителя ISAPI и коннектора AJPv13 для прокси-запросов к Tomcat. Когда мы пробуем запрос веб-сокета напрямую к tomcat через порт 8080, все работает нормально. Но когда мы пытаемся выполнить запрос веб-сокета через IIS, мы получаем следующую ошибку. Пожалуйста, дайте нам знать, если это поддерживается.

    2019-06-12 00:01:09,471 ERROR [ajp-nio-0.0.0.0-8009-exec-3] 
    [org.springframework.boot.web.servlet.support.ErrorPageFilter] 
    Forwarding to error page from request [/skinpack] due to exception 
    [Uncaught failure for request http://172.30.3.200/creatorportal/skinpack; 
    nested exception is java.lang.UnsupportedOperationException: 
    HTTP upgrade is not supported by this protocol] 

    org.springframework.web.socket.server.HandshakeFailureException: 
    Uncaught failure for request http://172.30.3.200/creatorportal/skinpack; 
nested exception is java.lang.UnsupportedOperationException: 
HTTP upgrade is not supported by this protocol 
                        at org.springframework.web.socket.server.support.WebSocketHttpRequestHandler.handleRequest(WebSocketHttpRequestHandler.java:175) 
                        at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:53) 
                        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) 
                        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) 
                        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) 
                        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) 
                        at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) 
                        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) 
                        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
                        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
                        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) 
                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
                        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) 
                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
                        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) 
                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
                        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130) 
                        at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) 
                        at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105) 
                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
                        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123) 
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
                        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) 
                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
                        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) 
                        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
                        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491) 
                        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) 
                        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 
                        at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:488) 
                        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:685) 
                        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
                        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 
                        at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:394) 
                        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
                        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:764) 
                        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1388) 
                        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
                        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
                        at java.lang.Thread.run(Thread.java:748) 
        Caused by: java.lang.UnsupportedOperationException: HTTP upgrade is not supported by this protocol 
                        at org.apache.coyote.AbstractProcessor.doHttpUpgrade(AbstractProcessor.java:824) 
                        at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:566) 
                        at org.apache.coyote.Request.action(Request.java:432) 
                        at org.apache.catalina.connector.Request.upgrade(Request.java:2005) 
                        at org.apache.catalina.connector.RequestFacade.upgrade(RequestFacade.java:1123) 
                        at org.apache.tomcat.websocket.server.UpgradeUtil.doUpgrade(UpgradeUtil.java:235) 
                        at org.apache.tomcat.websocket.server.WsServerContainer.doUpgrade(WsServerContainer.java:263) 
                        at org.springframework.web.socket.server.standard.TomcatRequestUpgradeStrategy.upgradeInternal(TomcatRequestUpgradeStrategy.java:72) 
                        at org.springframework.web.socket.server.standard.AbstractStandardUpgradeStrategy.upgrade(AbstractStandardUpgradeStrategy.java:136) 
                        at org.springframework.web.socket.server.support.AbstractHandshakeHandler.doHandshake(AbstractHandshakeHandler.java:279) 
                        at org.springframework.web.socket.server.support.WebSocketHttpRequestHandler.handleRequest(WebSocketHttpRequestHandler.java:167) 
                        ... 54 common frames omitted 
...