2015-06-05 42 views
7

我正在使用WebSockets進行開發,並且在Tomcat 8上運行了一個可用的Web應用程序。但是,在使用Apache 2進行測試時,客戶端得到一個HTTP 500和Tomcat日誌說:通過Apache和Tomcat的WebSockets:AJP協議不支持HTTP升級

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支持,是否有解決方法?

回答

4

使用Apache模塊mod_proxy_wstunnel

sudo a2enmod mod_proxy_wstunnel 

然後使用它來讓WebSocket連接加入這apache.conf

ProxyPass "/ws2/" "ws://localhost:8180/ws" 

並確保您已通過啓用在Tomcat中的HTTP連接器<Connector protocol="HTTP/1.1" port="8180" ...> in server.xml

+3

它是在Apache 2.4.7中沒有「mod_」的sudo a2enmod proxy_wstunnel – xtian