How to handle old IE?

UI Components for JSF
Post Reply
FkJ
Posts: 183
Joined: 08 Jan 2010, 19:16

10 Mar 2014, 15:15

Found this topic here, but my problem is different.

Using the default PushServet and p:socket configuration showed in the reference guide, if I just open a page that uses push with IE 7 or 8, I start get a java.lang.IllegalStateException: Not supported. lots of times. Since I don't limit the console output after a while Eclipse crashes with an IOException and in production my log files have about 4GB at the end of the day.

I didn't had the opportunity to test with IE 9 yet, but from what I read it supports long-polling, so it should work.

Should I implement some server side logic to don't render the p:socket component in case of old IE or is there another alternative?

Thanks in advance,
Phillip

Tested with Tomcat 8.0.3 and 7.0.52, PF 4.0.9, Atmosphere 2.0.7 and 2.1.0.
Full stackStrace:

Code: Select all

Grave: Servlet.service() for servlet [Push Servlet] in context with path [/colaborador] threw exception [Filtered request failed.] with root cause
java.lang.IllegalStateException: Not supported.
	at org.apache.catalina.connector.Request.startAsync(Request.java:1604)
	at org.apache.catalina.connector.RequestFacade.startAsync(RequestFacade.java:1037)
	at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:384)
	at org.atmosphere.cpr.AtmosphereRequest.startAsync(AtmosphereRequest.java:678)
	at org.atmosphere.container.Servlet30CometSupport.suspend(Servlet30CometSupport.java:93)
	at org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:68)
	at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1782)
	at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:201)
	at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:187)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.spdata.filter.ExceptionFilter.doFilter(ExceptionFilter.java:36)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
	at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744) 

smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

10 Mar 2014, 17:28

FkJ wrote:Should I implement some server side logic to don't render the p:socket component in case of old IE or is there another alternative?
Yes. Use p:poll for IE7 and IE8 instead of p:socket.

Before I 'started' using PrimeFaces Push - FacesMessage 'use case', I was doing the same thing with p:poll.

check useragent (maybe in/via a servlet/filter), render p:poll instead of p:socket for 'browsers' that do not support (atmosphere) 'websocket'.

atmosphere supports 'long-polling', so if you really want to use atmosphere's long-polling implementation, then browse/read/review atmosphere's wiki web pages/site, and learn how to use atmosphere for ie7/8/etc...
Howard

PrimeFaces 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 22 guests