Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.0-Alpha1
-
Fix Version/s: 2.0-Alpha3, 2.0.0
-
Labels:None
-
Environment:ICEfaces 2 Push Glassfish 3
Description
The following exception is occasionally thrown when running Auction on Glassfish 3 although the problem may not be limited to that environment:
[#|2010-01-21T10:59:40.295-0700|WARNING|glassfishv3.0|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=28;_ThreadName=http-thread-pool-8080-(3);|StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.RuntimeException: java.lang.RuntimeException: Query does not contain parameter named: ice.pushid
at org.icefaces.push.servlet.ICEpushResourceHandler.handleResourceRequest(ICEpushResourceHandler.java:65)
at org.icefaces.push.servlet.ICEfacesResourceHandler.handleResourceRequest(ICEfacesResourceHandler.java:108)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException: Query does not contain parameter named: ice.pushid
at org.icepush.servlet.ServletRequestResponse.checkExistenceOf(ServletRequestResponse.java:304)
at org.icepush.servlet.ServletRequestResponse.getParameterAsStrings(ServletRequestResponse.java:141)
at org.icepush.BlockingConnectionServer$3.service(BlockingConnectionServer.java:93)
at org.icepush.BlockingConnectionServer.service(BlockingConnectionServer.java:123)
at org.icepush.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:46)
at org.icepush.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:51)
at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:44)
at org.icepush.servlet.BrowserDispatcher$BrowserEntry.service(BrowserDispatcher.java:109)
at org.icepush.servlet.BrowserDispatcher.service(BrowserDispatcher.java:50)
at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:44)
at org.icepush.servlet.MainServlet.service(MainServlet.java:44)
at org.icefaces.push.servlet.ICEpushResourceHandler.handleResourceRequest(ICEpushResourceHandler.java:63)
... 26 more
[#|2010-01-21T10:59:40.295-0700|WARNING|glassfishv3.0|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=28;_ThreadName=http-thread-pool-8080-(3);|StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.RuntimeException: java.lang.RuntimeException: Query does not contain parameter named: ice.pushid
at org.icefaces.push.servlet.ICEpushResourceHandler.handleResourceRequest(ICEpushResourceHandler.java:65)
at org.icefaces.push.servlet.ICEfacesResourceHandler.handleResourceRequest(ICEfacesResourceHandler.java:108)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException: Query does not contain parameter named: ice.pushid
at org.icepush.servlet.ServletRequestResponse.checkExistenceOf(ServletRequestResponse.java:304)
at org.icepush.servlet.ServletRequestResponse.getParameterAsStrings(ServletRequestResponse.java:141)
at org.icepush.BlockingConnectionServer$3.service(BlockingConnectionServer.java:93)
at org.icepush.BlockingConnectionServer.service(BlockingConnectionServer.java:123)
at org.icepush.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:46)
at org.icepush.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:51)
at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:44)
at org.icepush.servlet.BrowserDispatcher$BrowserEntry.service(BrowserDispatcher.java:109)
at org.icepush.servlet.BrowserDispatcher.service(BrowserDispatcher.java:50)
at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:44)
at org.icepush.servlet.MainServlet.service(MainServlet.java:44)
at org.icefaces.push.servlet.ICEpushResourceHandler.handleResourceRequest(ICEpushResourceHandler.java:63)
... 26 more
The solution chosen was to send a 'noop' message back to the client if no ice.pushid parameters where present in the request. If the browser is still active then the blocking connection should be recreated by the bridge, hopefully with the correct list of pushIDs in the request. If the request was made by a bridge that was about to shutdown then the 'noop' response will terminate the blocking connection without any side effects.