2015-06-05 15 views
7

Sto sviluppando con WebSockets e ho creato un'applicazione Web funzionante su Tomcat 8. Tuttavia, quando si esegue il test con Apache 2 di fronte ad esso, il client è ottenere un HTTP 500 e il registro Tomcat dice:WebSocket tramite Apache e Tomcat: l'aggiornamento HTTP non è supportato dal protocollo AJP

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) 

questo ha funzionato durante l'accesso Tomcat direttamente attraverso il suo connettore HTTP. Se questo non è supportato con AJP, c'è una soluzione? Modulo

risposta

4

Usa Apache mod_proxy_wstunnel:

sudo a2enmod mod_proxy_wstunnel 

quindi utilizzarlo per permettere connessioni websocket attraverso aggiungendo questo a apache.conf:

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

e assicurarsi di aver abilitato un connettore HTTP in Tomcat utilizzando <Connector protocol="HTTP/1.1" port="8180" ...> in server.xml.

+3

È sudo a2enmod proxy_wstunnel, senza "mod_", in apache 2.4.7 – xtian

Problemi correlati