Re: Websocket stopped working on tomcat 7.0.50
Mark, Here after doing all the tests I found the exact error. It was not what i am thinking all through. Sorry for the confusion I created and I apologize for overenthusiasm in opening the bug. The problem was with order of proxypass directives i was confiuring Here I gice both configurations for anybody who might face similar probs: The one which doesn't work : JkMount /jkweb/* localtomcat JkUnMount /jkweb/project/content/* localtomcat JkUnMount /jkweb/angle/content/* localtomcat JkUnMount /jkweb/index.jsp localtomcat JkUnMount /jkweb/ localtomcat ProxyRequests Off ProxyPreserveHost On ProxyPass /jkweb ! ProxyPass /jkweb/ ! ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPass / http://localhost:8080/jkweb/ ProxyPassReverse / http://localhost:8080/jkweb And Here us the one which works irrespective of which hosts we use : JkMount /jkweb/* localtomcat JkUnMount /jkweb/project/content/* localtomcat JkUnMount /jkweb/angle/content/* localtomcat JkUnMount /jkweb/index.jsp localtomcat JkUnMount /jkweb/ localtomcat ProxyRequests Off ProxyPreserveHost On ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPass /jkweb ! ProxyPass /jkweb/ ! ProxyPass / http://localhost:8080/jkweb/ ProxyPassReverse / http://localhost:8080/jkweb The difference is the place where I place ProxyPass /jkweb ! ProxyPass /jkweb/ ! Directives. Thanks, Shailesh. On Sat, Mar 1, 2014 at 6:33 PM, J Java wrote: > When I revert to earlier config with localhost it starts working. > > > On Sat, Mar 1, 2014 at 6:18 PM, J Java wrote: > >> JkMount /jkweb/* localtomcat >> JkUnMount /jkweb/project/content/* localtomcat >> JkUnMount /jkweb/angle/content/* localtomcat >> JkUnMount /jkweb/index.jsp localtomcat >> JkUnMount /jkweb/ localtomcat >> >> ProxyRequests Off >> ProxyPreserveHost On >> >> ProxyPass /jkweb ! >> ProxyPass /jkweb/ ! >> ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >> ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >> ProxyPass / http://localhost:8080/jkweb/ >> ProxyPassReverse / http://localhost:8080/jkweb >> >> Updated configuration..above is the complete configuration for my >> virtualhost. >> >> >> >> On Sat, Mar 1, 2014 at 6:14 PM, J Java wrote: >> >>> Mark, >>> >>> following is how i have configured reverse proxy : >>> >>> ProxyRequests Off >>> ProxyPreserveHost On >>> >>> ProxyPass /jkweb ! >>> ProxyPass /jkweb/ ! >>> ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >>> ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >>> ProxyPass / http://localhost:8080/jkweb/ >>> ProxyPassReverse / http://localhost:8080/jkweb >>> >>> I am using Apache 2.4 which comes with mod_proxy_wstunnel module to >>> support http upgrade to Websocket. >>> >>> Also my code works fine if I configure localhost everywhere, its just when >>> I change it to use dummy host using window's hosts file and virtual host it >>> stops working. And it upgrades to WebSocket but cant send or receive >>> messages after that. Please find in detail configuration and code in my >>> first post. Any pointers how to go about it will really help. Or let me >>> know the right place to open bug for this. >>> >>> Thanks, >>> >>> Shailesh. >>> >>> >>> >>> On Sat, Mar 1, 2014 at 4:10 PM, Mark Thomas wrote: >>> On 1 March 2014 10:02:48 GMT, J Java wrote: >I tried debuggin tomcat sources. And compared the difference I am >getting >between normal tomcat websocket examples and my code. Only difference i >could found was tomcat example uses Abstract Protocol class to fire the >register session event and mine uses AjpProcessor(because I am using >tomcat >behind apache). but in AJpProcessor class it gets stuck and never calls >registersession for Websocket. > >I know above information might be utterlyt useless but this waht i have >understood ..guys I need this to be resolved ASAP. it was working fine >when >i was using localhost everywhere. since I changed it to dummy host it >has >stopped working How is your reverse proxy configured? mod_jk doesn't support HTTP upgrade and the last time I looked mod_proxy support for WebSocket wasn't fit for purpose. Mark >On Sat, Mar 1, 2014 at 2:31 PM, J Java wrote: > >> >> 127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET >> /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 >> 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET >> /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 >HTTP/1.1" >> 200 - >> phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET >> >/jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c3
Re: Websocket stopped working on tomcat 7.0.50
When I revert to earlier config with localhost it starts working. On Sat, Mar 1, 2014 at 6:18 PM, J Java wrote: > JkMount /jkweb/* localtomcat > JkUnMount /jkweb/project/content/* localtomcat > JkUnMount /jkweb/angle/content/* localtomcat > JkUnMount /jkweb/index.jsp localtomcat > JkUnMount /jkweb/ localtomcat > > ProxyRequests Off > ProxyPreserveHost On > > ProxyPass /jkweb ! > ProxyPass /jkweb/ ! > ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ > ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ > ProxyPass / http://localhost:8080/jkweb/ > ProxyPassReverse / http://localhost:8080/jkweb > > Updated configuration..above is the complete configuration for my > virtualhost. > > > > On Sat, Mar 1, 2014 at 6:14 PM, J Java wrote: > >> Mark, >> >> following is how i have configured reverse proxy : >> >> ProxyRequests Off >> ProxyPreserveHost On >> >> ProxyPass /jkweb ! >> ProxyPass /jkweb/ ! >> ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >> ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >> ProxyPass / http://localhost:8080/jkweb/ >> ProxyPassReverse / http://localhost:8080/jkweb >> >> I am using Apache 2.4 which comes with mod_proxy_wstunnel module to support >> http upgrade to Websocket. >> >> Also my code works fine if I configure localhost everywhere, its just when I >> change it to use dummy host using window's hosts file and virtual host it >> stops working. And it upgrades to WebSocket but cant send or receive >> messages after that. Please find in detail configuration and code in my >> first post. Any pointers how to go about it will really help. Or let me know >> the right place to open bug for this. >> >> Thanks, >> >> Shailesh. >> >> >> >> On Sat, Mar 1, 2014 at 4:10 PM, Mark Thomas wrote: >> >>> On 1 March 2014 10:02:48 GMT, J Java wrote: >>> >I tried debuggin tomcat sources. And compared the difference I am >>> >getting >>> >between normal tomcat websocket examples and my code. Only difference i >>> >could found was tomcat example uses Abstract Protocol class to fire the >>> >register session event and mine uses AjpProcessor(because I am using >>> >tomcat >>> >behind apache). but in AJpProcessor class it gets stuck and never calls >>> >registersession for Websocket. >>> > >>> >I know above information might be utterlyt useless but this waht i have >>> >understood ..guys I need this to be resolved ASAP. it was working fine >>> >when >>> >i was using localhost everywhere. since I changed it to dummy host it >>> >has >>> >stopped working >>> >>> How is your reverse proxy configured? mod_jk doesn't support HTTP >>> upgrade and the last time I looked mod_proxy support for WebSocket wasn't >>> fit for purpose. >>> >>> Mark >>> >>> >>> >On Sat, Mar 1, 2014 at 2:31 PM, J Java wrote: >>> > >>> >> >>> >> 127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET >>> >> /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 >>> >> 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET >>> >> /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 >>> >HTTP/1.1" >>> >> 200 - >>> >> phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET >>> >> >>> >>> >/jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c33-bc92-e0a46cb2d2b5 >>> >> HTTP/1.1" 101 - >>> >> >>> >> Above is the relevant log section of apache : could it be the cause >>> >that >>> >> websocket request is coming from phasingapp.com and others from >>> >127.0.01 >>> >> >>> >> >>> >> On Sat, Mar 1, 2014 at 1:53 PM, J Java >>> >wrote: >>> >> >>> >>> I had recently implemented websocket on tomcat 7.0.50. my tomcat >>> >runs >>> >>> behind apache 2.4. I use Strtus 2 and Spring Security. It has >>> >stopped >>> >>> working. >>> >>> >>> >>> Problem : Websocket connection is opened successfully. Javascript >>> >event >>> >>> handler get fires successfully. Apache logs show that request was >>> >accepted >>> >>> as an protocol upgrade request with 101 code Tomcat access logs also >>> >show >>> >>> the same code 101 for protocol upgrade >>> >>> >>> >>> However on server side onOpen message is not fired. I tried sending >>> >the >>> >>> message as soon as connection is opened in javascript's event >>> >handler.. >>> >>> There is no error in javascript but Server side endPoint's onmessage >>> >is >>> >>> never called just like onOpen is never called. >>> >>> >>> >>> Here are the changes I made after which it has stopped working: >>> >>> >>> >>> Windows Host file : I use dummy host name through Windows host >>> >file: >>> >>> 127.0.0.1phasingapp.com >>> >>> 127.0.0.1pricer.com >>> >>> >>> >>> URL of wesocket : >>> >>> >>> >>> old : ws://localhost:86/websocket/filuploadtrackerendpoint >>> >>> new : ws://phasingapp.com:86/websocket/filuploadtrackerendpoint >>> >>> >>> >>> Added virtual host config for apache : >>> >>> >>> >>> >>> >>> Require host phasingapp.com granted >>> >>> >>> >>> >>> >>> JkMount /jkweb/* localtomcat >>> >>
Re: Websocket stopped working on tomcat 7.0.50
JkMount /jkweb/* localtomcat JkUnMount /jkweb/project/content/* localtomcat JkUnMount /jkweb/angle/content/* localtomcat JkUnMount /jkweb/index.jsp localtomcat JkUnMount /jkweb/ localtomcat ProxyRequests Off ProxyPreserveHost On ProxyPass /jkweb ! ProxyPass /jkweb/ ! ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPass / http://localhost:8080/jkweb/ ProxyPassReverse / http://localhost:8080/jkweb Updated configuration..above is the complete configuration for my virtualhost. On Sat, Mar 1, 2014 at 6:14 PM, J Java wrote: > Mark, > > following is how i have configured reverse proxy : > > ProxyRequests Off > ProxyPreserveHost On > > ProxyPass /jkweb ! > ProxyPass /jkweb/ ! > ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ > ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ > ProxyPass / http://localhost:8080/jkweb/ > ProxyPassReverse / http://localhost:8080/jkweb > > I am using Apache 2.4 which comes with mod_proxy_wstunnel module to support > http upgrade to Websocket. > > Also my code works fine if I configure localhost everywhere, its just when I > change it to use dummy host using window's hosts file and virtual host it > stops working. And it upgrades to WebSocket but cant send or receive messages > after that. Please find in detail configuration and code in my first post. > Any pointers how to go about it will really help. Or let me know the right > place to open bug for this. > > Thanks, > > Shailesh. > > > > On Sat, Mar 1, 2014 at 4:10 PM, Mark Thomas wrote: > >> On 1 March 2014 10:02:48 GMT, J Java wrote: >> >I tried debuggin tomcat sources. And compared the difference I am >> >getting >> >between normal tomcat websocket examples and my code. Only difference i >> >could found was tomcat example uses Abstract Protocol class to fire the >> >register session event and mine uses AjpProcessor(because I am using >> >tomcat >> >behind apache). but in AJpProcessor class it gets stuck and never calls >> >registersession for Websocket. >> > >> >I know above information might be utterlyt useless but this waht i have >> >understood ..guys I need this to be resolved ASAP. it was working fine >> >when >> >i was using localhost everywhere. since I changed it to dummy host it >> >has >> >stopped working >> >> How is your reverse proxy configured? mod_jk doesn't support HTTP upgrade >> and the last time I looked mod_proxy support for WebSocket wasn't fit for >> purpose. >> >> Mark >> >> >> >On Sat, Mar 1, 2014 at 2:31 PM, J Java wrote: >> > >> >> >> >> 127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET >> >> /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 >> >> 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET >> >> /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 >> >HTTP/1.1" >> >> 200 - >> >> phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET >> >> >> >> >/jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c33-bc92-e0a46cb2d2b5 >> >> HTTP/1.1" 101 - >> >> >> >> Above is the relevant log section of apache : could it be the cause >> >that >> >> websocket request is coming from phasingapp.com and others from >> >127.0.01 >> >> >> >> >> >> On Sat, Mar 1, 2014 at 1:53 PM, J Java >> >wrote: >> >> >> >>> I had recently implemented websocket on tomcat 7.0.50. my tomcat >> >runs >> >>> behind apache 2.4. I use Strtus 2 and Spring Security. It has >> >stopped >> >>> working. >> >>> >> >>> Problem : Websocket connection is opened successfully. Javascript >> >event >> >>> handler get fires successfully. Apache logs show that request was >> >accepted >> >>> as an protocol upgrade request with 101 code Tomcat access logs also >> >show >> >>> the same code 101 for protocol upgrade >> >>> >> >>> However on server side onOpen message is not fired. I tried sending >> >the >> >>> message as soon as connection is opened in javascript's event >> >handler.. >> >>> There is no error in javascript but Server side endPoint's onmessage >> >is >> >>> never called just like onOpen is never called. >> >>> >> >>> Here are the changes I made after which it has stopped working: >> >>> >> >>> Windows Host file : I use dummy host name through Windows host >> >file: >> >>> 127.0.0.1phasingapp.com >> >>> 127.0.0.1pricer.com >> >>> >> >>> URL of wesocket : >> >>> >> >>> old : ws://localhost:86/websocket/filuploadtrackerendpoint >> >>> new : ws://phasingapp.com:86/websocket/filuploadtrackerendpoint >> >>> >> >>> Added virtual host config for apache : >> >>> >> >>> >> >>> Require host phasingapp.com granted >> >>> >> >>> >> >>> JkMount /jkweb/* localtomcat >> >>> JkUnMount /jkweb/project/content/* localtomcat >> >>> JkUnMount /jkweb/angle/content/* localtomcat >> >>> JkUnMount /jkweb/index.jsp localtomcat >> >>> JkUnMount /jkweb/ localtomcat >> >>> >> >>> ProxyRequests Off >> >>> ProxyPreserveHost On >> >>> >> >>> ProxyPass /jkweb
Re: Websocket stopped working on tomcat 7.0.50
Mark, following is how i have configured reverse proxy : ProxyRequests Off ProxyPreserveHost On ProxyPass /jkweb ! ProxyPass /jkweb/ ! ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ ProxyPass / http://localhost:8080/jkweb/ ProxyPassReverse / http://localhost:8080/jkweb I am using Apache 2.4 which comes with mod_proxy_wstunnel module to support http upgrade to Websocket. Also my code works fine if I configure localhost everywhere, its just when I change it to use dummy host using window's hosts file and virtual host it stops working. And it upgrades to WebSocket but cant send or receive messages after that. Please find in detail configuration and code in my first post. Any pointers how to go about it will really help. Or let me know the right place to open bug for this. Thanks, Shailesh. On Sat, Mar 1, 2014 at 4:10 PM, Mark Thomas wrote: > On 1 March 2014 10:02:48 GMT, J Java wrote: > >I tried debuggin tomcat sources. And compared the difference I am > >getting > >between normal tomcat websocket examples and my code. Only difference i > >could found was tomcat example uses Abstract Protocol class to fire the > >register session event and mine uses AjpProcessor(because I am using > >tomcat > >behind apache). but in AJpProcessor class it gets stuck and never calls > >registersession for Websocket. > > > >I know above information might be utterlyt useless but this waht i have > >understood ..guys I need this to be resolved ASAP. it was working fine > >when > >i was using localhost everywhere. since I changed it to dummy host it > >has > >stopped working > > How is your reverse proxy configured? mod_jk doesn't support HTTP upgrade > and the last time I looked mod_proxy support for WebSocket wasn't fit for > purpose. > > Mark > > > >On Sat, Mar 1, 2014 at 2:31 PM, J Java wrote: > > > >> > >> 127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET > >> /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 > >> 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET > >> /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 > >HTTP/1.1" > >> 200 - > >> phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET > >> > > >/jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c33-bc92-e0a46cb2d2b5 > >> HTTP/1.1" 101 - > >> > >> Above is the relevant log section of apache : could it be the cause > >that > >> websocket request is coming from phasingapp.com and others from > >127.0.01 > >> > >> > >> On Sat, Mar 1, 2014 at 1:53 PM, J Java > >wrote: > >> > >>> I had recently implemented websocket on tomcat 7.0.50. my tomcat > >runs > >>> behind apache 2.4. I use Strtus 2 and Spring Security. It has > >stopped > >>> working. > >>> > >>> Problem : Websocket connection is opened successfully. Javascript > >event > >>> handler get fires successfully. Apache logs show that request was > >accepted > >>> as an protocol upgrade request with 101 code Tomcat access logs also > >show > >>> the same code 101 for protocol upgrade > >>> > >>> However on server side onOpen message is not fired. I tried sending > >the > >>> message as soon as connection is opened in javascript's event > >handler.. > >>> There is no error in javascript but Server side endPoint's onmessage > >is > >>> never called just like onOpen is never called. > >>> > >>> Here are the changes I made after which it has stopped working: > >>> > >>> Windows Host file : I use dummy host name through Windows host > >file: > >>> 127.0.0.1phasingapp.com > >>> 127.0.0.1pricer.com > >>> > >>> URL of wesocket : > >>> > >>> old : ws://localhost:86/websocket/filuploadtrackerendpoint > >>> new : ws://phasingapp.com:86/websocket/filuploadtrackerendpoint > >>> > >>> Added virtual host config for apache : > >>> > >>> > >>> Require host phasingapp.com granted > >>> > >>> > >>> JkMount /jkweb/* localtomcat > >>> JkUnMount /jkweb/project/content/* localtomcat > >>> JkUnMount /jkweb/angle/content/* localtomcat > >>> JkUnMount /jkweb/index.jsp localtomcat > >>> JkUnMount /jkweb/ localtomcat > >>> > >>> ProxyRequests Off > >>> ProxyPreserveHost On > >>> > >>> ProxyPass /jkweb ! > >>> ProxyPass /jkweb/ ! > >>> ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ > >>> ProxyPassReverse /jkweb/websocket/ > >ws://localhost:8080/jkweb/websocket/ > >>> ProxyPass / http://localhost:8080/jkweb/ > >>> ProxyPassReverse / http://localhost:8080/jkweb/ > >>> > >>> Struts 2 : > >>> > >>> changed url pattern for Struts 2 filter from ".action to " /* ". > >Also added exclusion filters > >>> to strtus2 for webscoket urls : > >>> > >>> >value=".*websocket/.*"/> > >>> > >>> Everything seems to be working fine as i am gettting no error > >anywhere in > >>> apache,tomcat,spring security and Struts2 logs. > >>> > >>> However on server side no handlers are called? > >>> > >>> Earlier I had faced similar problem but it was because I had put > >>> websock
Re: Websocket stopped working on tomcat 7.0.50
On 1 March 2014 10:02:48 GMT, J Java wrote: >I tried debuggin tomcat sources. And compared the difference I am >getting >between normal tomcat websocket examples and my code. Only difference i >could found was tomcat example uses Abstract Protocol class to fire the >register session event and mine uses AjpProcessor(because I am using >tomcat >behind apache). but in AJpProcessor class it gets stuck and never calls >registersession for Websocket. > >I know above information might be utterlyt useless but this waht i have >understood ..guys I need this to be resolved ASAP. it was working fine >when >i was using localhost everywhere. since I changed it to dummy host it >has >stopped working How is your reverse proxy configured? mod_jk doesn't support HTTP upgrade and the last time I looked mod_proxy support for WebSocket wasn't fit for purpose. Mark >On Sat, Mar 1, 2014 at 2:31 PM, J Java wrote: > >> >> 127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET >> /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 >> 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET >> /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 >HTTP/1.1" >> 200 - >> phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET >> >/jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c33-bc92-e0a46cb2d2b5 >> HTTP/1.1" 101 - >> >> Above is the relevant log section of apache : could it be the cause >that >> websocket request is coming from phasingapp.com and others from >127.0.01 >> >> >> On Sat, Mar 1, 2014 at 1:53 PM, J Java >wrote: >> >>> I had recently implemented websocket on tomcat 7.0.50. my tomcat >runs >>> behind apache 2.4. I use Strtus 2 and Spring Security. It has >stopped >>> working. >>> >>> Problem : Websocket connection is opened successfully. Javascript >event >>> handler get fires successfully. Apache logs show that request was >accepted >>> as an protocol upgrade request with 101 code Tomcat access logs also >show >>> the same code 101 for protocol upgrade >>> >>> However on server side onOpen message is not fired. I tried sending >the >>> message as soon as connection is opened in javascript's event >handler.. >>> There is no error in javascript but Server side endPoint's onmessage >is >>> never called just like onOpen is never called. >>> >>> Here are the changes I made after which it has stopped working: >>> >>> Windows Host file : I use dummy host name through Windows host >file: >>> 127.0.0.1phasingapp.com >>> 127.0.0.1pricer.com >>> >>> URL of wesocket : >>> >>> old : ws://localhost:86/websocket/filuploadtrackerendpoint >>> new : ws://phasingapp.com:86/websocket/filuploadtrackerendpoint >>> >>> Added virtual host config for apache : >>> >>> >>> Require host phasingapp.com granted >>> >>> >>> JkMount /jkweb/* localtomcat >>> JkUnMount /jkweb/project/content/* localtomcat >>> JkUnMount /jkweb/angle/content/* localtomcat >>> JkUnMount /jkweb/index.jsp localtomcat >>> JkUnMount /jkweb/ localtomcat >>> >>> ProxyRequests Off >>> ProxyPreserveHost On >>> >>> ProxyPass /jkweb ! >>> ProxyPass /jkweb/ ! >>> ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >>> ProxyPassReverse /jkweb/websocket/ >ws://localhost:8080/jkweb/websocket/ >>> ProxyPass / http://localhost:8080/jkweb/ >>> ProxyPassReverse / http://localhost:8080/jkweb/ >>> >>> Struts 2 : >>> >>> changed url pattern for Struts 2 filter from ".action to " /* ". >Also added exclusion filters >>> to strtus2 for webscoket urls : >>> >>> value=".*websocket/.*"/> >>> >>> Everything seems to be working fine as i am gettting no error >anywhere in >>> apache,tomcat,spring security and Struts2 logs. >>> >>> However on server side no handlers are called? >>> >>> Earlier I had faced similar problem but it was because I had put >>> websocket-api jar in my WEB-INF/lib which was preventing websocket >>> connection from getting opened. No connection is opened but no >handler is >>> called after that and after some time connection is closed obviously >>> because of timout I suppose. >>> >>> Here is my ServerEndPoint class : >>> >>> package com.jkweb.websocket; >>> >>> import java.io.IOException; >>> import java.util.HashMap; >>> import java.util.List; >>> import java.util.Map; >>> >>> import javax.websocket.EndpointConfig; >>> import javax.websocket.OnMessage; >>> import javax.websocket.OnOpen; >>> import javax.websocket.Session; >>> import javax.websocket.server.PathParam; >>> import javax.websocket.server.ServerEndpoint; >>> >>> import org.slf4j.Logger; >>> import org.slf4j.LoggerFactory; >>> >>> @ServerEndpoint(value="/websocket/fileuploadtracker") >>>public class FileUploadTrackerEndPoint{ >>>private static final Logger logger = LoggerFactory >>> .getLogger(FileUploadTrackerEndPoint.class); >>>private static HashMap socketConnectionMap = >newHashMap(); >>> >>>
Re: Websocket stopped working on tomcat 7.0.50
I tried debuggin tomcat sources. And compared the difference I am getting between normal tomcat websocket examples and my code. Only difference i could found was tomcat example uses Abstract Protocol class to fire the register session event and mine uses AjpProcessor(because I am using tomcat behind apache). but in AJpProcessor class it gets stuck and never calls registersession for Websocket. I know above information might be utterlyt useless but this waht i have understood ..guys I need this to be resolved ASAP. it was working fine when i was using localhost everywhere. since I changed it to dummy host it has stopped working On Sat, Mar 1, 2014 at 2:31 PM, J Java wrote: > > 127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET > /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 > 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET > /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 HTTP/1.1" > 200 - > phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET > /jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c33-bc92-e0a46cb2d2b5 > HTTP/1.1" 101 - > > Above is the relevant log section of apache : could it be the cause that > websocket request is coming from phasingapp.com and others from 127.0.01 > > > On Sat, Mar 1, 2014 at 1:53 PM, J Java wrote: > >> I had recently implemented websocket on tomcat 7.0.50. my tomcat runs >> behind apache 2.4. I use Strtus 2 and Spring Security. It has stopped >> working. >> >> Problem : Websocket connection is opened successfully. Javascript event >> handler get fires successfully. Apache logs show that request was accepted >> as an protocol upgrade request with 101 code Tomcat access logs also show >> the same code 101 for protocol upgrade >> >> However on server side onOpen message is not fired. I tried sending the >> message as soon as connection is opened in javascript's event handler.. >> There is no error in javascript but Server side endPoint's onmessage is >> never called just like onOpen is never called. >> >> Here are the changes I made after which it has stopped working: >> >> Windows Host file : I use dummy host name through Windows host file: >> 127.0.0.1phasingapp.com >> 127.0.0.1pricer.com >> >> URL of wesocket : >> >> old : ws://localhost:86/websocket/filuploadtrackerendpoint >> new : ws://phasingapp.com:86/websocket/filuploadtrackerendpoint >> >> Added virtual host config for apache : >> >> >> Require host phasingapp.com granted >> >> >> JkMount /jkweb/* localtomcat >> JkUnMount /jkweb/project/content/* localtomcat >> JkUnMount /jkweb/angle/content/* localtomcat >> JkUnMount /jkweb/index.jsp localtomcat >> JkUnMount /jkweb/ localtomcat >> >> ProxyRequests Off >> ProxyPreserveHost On >> >> ProxyPass /jkweb ! >> ProxyPass /jkweb/ ! >> ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >> ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >> ProxyPass / http://localhost:8080/jkweb/ >> ProxyPassReverse / http://localhost:8080/jkweb/ >> >> Struts 2 : >> >> changed url pattern for Struts 2 filter from ".action to " /* ". Also added >> exclusion filters >> to strtus2 for webscoket urls : >> >> >> >> Everything seems to be working fine as i am gettting no error anywhere in >> apache,tomcat,spring security and Struts2 logs. >> >> However on server side no handlers are called? >> >> Earlier I had faced similar problem but it was because I had put >> websocket-api jar in my WEB-INF/lib which was preventing websocket >> connection from getting opened. No connection is opened but no handler is >> called after that and after some time connection is closed obviously >> because of timout I suppose. >> >> Here is my ServerEndPoint class : >> >> package com.jkweb.websocket; >> >> import java.io.IOException; >> import java.util.HashMap; >> import java.util.List; >> import java.util.Map; >> >> import javax.websocket.EndpointConfig; >> import javax.websocket.OnMessage; >> import javax.websocket.OnOpen; >> import javax.websocket.Session; >> import javax.websocket.server.PathParam; >> import javax.websocket.server.ServerEndpoint; >> >> import org.slf4j.Logger; >> import org.slf4j.LoggerFactory; >> >> @ServerEndpoint(value="/websocket/fileuploadtracker") >>public class FileUploadTrackerEndPoint{ >>private static final Logger logger = LoggerFactory >> .getLogger(FileUploadTrackerEndPoint.class); >>private static HashMap socketConnectionMap = new >> HashMap(); >> >> @OnOpen >> public void open(Session session) { >> Map> paramMap = session.getRequestParameterMap(); >> List uniqueTockenValues = paramMap.get("uniqueTocken"); >> if(uniqueTockenValues != null && uniqueTockenValues.size() > 0){ >> socketConnectionMap.put(uniqueTockenValues.get(0),session); >> } >> } >> @OnMessage
Re: Websocket stopped working on tomcat 7.0.50
127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 HTTP/1.1" 200 - phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET /jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c33-bc92-e0a46cb2d2b5 HTTP/1.1" 101 - Above is the relevant log section of apache : could it be the cause that websocket request is coming from phasingapp.com and others from 127.0.01 On Sat, Mar 1, 2014 at 1:53 PM, J Java wrote: > I had recently implemented websocket on tomcat 7.0.50. my tomcat runs > behind apache 2.4. I use Strtus 2 and Spring Security. It has stopped > working. > > Problem : Websocket connection is opened successfully. Javascript event > handler get fires successfully. Apache logs show that request was accepted > as an protocol upgrade request with 101 code Tomcat access logs also show > the same code 101 for protocol upgrade > > However on server side onOpen message is not fired. I tried sending the > message as soon as connection is opened in javascript's event handler.. > There is no error in javascript but Server side endPoint's onmessage is > never called just like onOpen is never called. > > Here are the changes I made after which it has stopped working: > > Windows Host file : I use dummy host name through Windows host file: > 127.0.0.1phasingapp.com > 127.0.0.1pricer.com > > URL of wesocket : > > old : ws://localhost:86/websocket/filuploadtrackerendpoint > new : ws://phasingapp.com:86/websocket/filuploadtrackerendpoint > > Added virtual host config for apache : > > > Require host phasingapp.com granted > > > JkMount /jkweb/* localtomcat > JkUnMount /jkweb/project/content/* localtomcat > JkUnMount /jkweb/angle/content/* localtomcat > JkUnMount /jkweb/index.jsp localtomcat > JkUnMount /jkweb/ localtomcat > > ProxyRequests Off > ProxyPreserveHost On > > ProxyPass /jkweb ! > ProxyPass /jkweb/ ! > ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ > ProxyPassReverse /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ > ProxyPass / http://localhost:8080/jkweb/ > ProxyPassReverse / http://localhost:8080/jkweb/ > > Struts 2 : > > changed url pattern for Struts 2 filter from ".action to " /* ". Also added > exclusion filters > to strtus2 for webscoket urls : > > > > Everything seems to be working fine as i am gettting no error anywhere in > apache,tomcat,spring security and Struts2 logs. > > However on server side no handlers are called? > > Earlier I had faced similar problem but it was because I had put > websocket-api jar in my WEB-INF/lib which was preventing websocket > connection from getting opened. No connection is opened but no handler is > called after that and after some time connection is closed obviously > because of timout I suppose. > > Here is my ServerEndPoint class : > > package com.jkweb.websocket; > > import java.io.IOException; > import java.util.HashMap; > import java.util.List; > import java.util.Map; > > import javax.websocket.EndpointConfig; > import javax.websocket.OnMessage; > import javax.websocket.OnOpen; > import javax.websocket.Session; > import javax.websocket.server.PathParam; > import javax.websocket.server.ServerEndpoint; > > import org.slf4j.Logger; > import org.slf4j.LoggerFactory; > > @ServerEndpoint(value="/websocket/fileuploadtracker") >public class FileUploadTrackerEndPoint{ >private static final Logger logger = LoggerFactory > .getLogger(FileUploadTrackerEndPoint.class); >private static HashMap socketConnectionMap = new > HashMap(); > > @OnOpen > public void open(Session session) { > Map> paramMap = session.getRequestParameterMap(); > List uniqueTockenValues = paramMap.get("uniqueTocken"); > if(uniqueTockenValues != null && uniqueTockenValues.size() > 0){ > socketConnectionMap.put(uniqueTockenValues.get(0),session); > } > } > @OnMessage > public void onMessage(Session session, String msg) { > try { > session.getBasicRemote().sendText(msg); > } catch (IOException e) { > logger.error(e.getMessage()); > } > } > > public static void sendMessage(String uniqueTocken,String msg){ > try { > Session wsSession = socketConnectionMap.get(uniqueTocken); > wsSession.getBasicRemote().sendText(msg); > } catch (IOException e) { > logger.error(e.getMessage()); > } > } > } > > and my javascript code : > > createFileUploadWebSocket : function(){ > var that = this; > var uniqueTocken = $("#uniqueTocken").val(), > wsurl = > "ws://phasingapp.com:86/jkweb/websocket/fileuploadtracker?uniqueTocken="+uniq