我正在使用WebSockets进行开发,并在Tomcat 8上运行了一个正在运行的Web应用程序。但是,在使用Apache 2进行测试时,客户端正在获取HTTP 500并且Tomcat日志显示:
java.lang.UnsupportedOperationException: HTTP upgrade is not supported by the AJP protocol
at org.apache.coyote.ajp.AbstractAjpProcessor.action(AbstractAjpProcessor.java:587)
at org.apache.coyote.Request.action(Request.java:379)
at org.apache.catalina.connector.Request.upgrade(Request.java:1886)
at org.apache.catalina.connector.RequestFacade.upgrade(RequestFacade.java:1114)
at org.apache.tomcat.websocket.server.UpgradeUtil.doUpgrade(UpgradeUtil.java:231)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:77)
这在通过HTTP连接器直接访问Tomcat时起作用。如果AJP不支持此功能,是否有解决方法?
答案 0 :(得分:4)
使用Apache模块mod_proxy_wstunnel
:
sudo a2enmod mod_proxy_wstunnel
然后使用它将WebSocket连接添加到apache.conf
:
ProxyPass "/ws2/" "ws://localhost:8180/ws"
并确保使用<Connector protocol="HTTP/1.1" port="8180" ...>
中的server.xml
在Tomcat中启用了HTTP连接器。