[Solved] Push, IE 9 huge amount of requests

UI Components for JSF
Post Reply
marc.bouvier.agipi
Posts: 4
Joined: 25 May 2016, 17:03

26 May 2016, 18:31

Hello,
I am trying to use primefaces push to notify a client for an event. I adapted the Primefaces notify showcase so it works with spring framework for dependency injection.

JDK 1.8.0_u91
Tomcat 8.0.33
primefaces 5.3
atmosphere 2.4.2
atmosphere-spring 2.4.0

My browser target is internet explorer 9.

The use case is the following :

- the JSF page has a <p:socket channel="/notify/#{request.userPrincipal.name}" onMessage="handleMessage" />
- In the JSF page, I click on a button that triggers the send2() method in the backing bean
- send2() publish a message to the channel /notify/BOUVIERM
- in the Push endpoint (PushDemoResource) the onMessage() method is called
- the message is sent back to the JSF page, javascript function handleMessage() is called and the message is show at the screen.

This sample seems to work well with firefox and chrome using websocket protocol.
Unfortunately, in Internet explorer 9 it fallbacks to long-polling and a huge amount of requests is sent. It is generating a lot of stacktraces server side and about 4000 requests are sent (3.5mb sent and 8.5Mb received) in less than 1 minute.

Can you tell if you think there is something I misconfigured?

Thank you very much.

Maven config

Code: Select all

	<dependency>
		<groupId>org.primefaces</groupId>
		<artifactId>primefaces</artifactId>
		<version>5.3</version>
	</dependency>
	<dependency>
		<groupId>org.primefaces.themes</groupId>
		<artifactId>all-themes</artifactId>
		<version>1.0.10</version>
	</dependency>
	<dependency>
		<groupId>org.primefaces.extensions</groupId>
		<artifactId>primefaces-extensions</artifactId>
		<version>4.0.0</version>
	</dependency>
	<dependency>
		<groupId>org.primefaces.extensions</groupId>
		<artifactId>resources-codemirror</artifactId>
		<version>4.0.0</version>
	</dependency>
	<dependency>
		<groupId>org.primefaces.extensions</groupId>
		<artifactId>resources-ckeditor</artifactId>
		<version>4.0.0</version>
	</dependency>
	<dependency>
		<groupId>org.omnifaces</groupId>
		<artifactId>omnifaces</artifactId>
		<version>1.8.1</version>
	</dependency>
	<dependency>
		<groupId>org.atmosphere</groupId>
		<artifactId>atmosphere-runtime</artifactId>
		<version>2.4.2</version>
	</dependency>
	<dependency>
		<groupId>org.atmosphere</groupId>
		<artifactId>atmosphere-spring</artifactId>
		<version>2.4.0</version>
	</dependency>
web.xml

Code: Select all

	<!-- JSF mapping -->
<servlet>
	<servlet-name>Faces Servlet</servlet-name>
	<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map these files with JSF -->
<servlet-mapping>
	<servlet-name>Faces Servlet</servlet-name>
	<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
	<servlet-name>Faces Servlet</servlet-name>
	<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
	<servlet-name>Faces Servlet</servlet-name>
	<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
	<servlet-name>Faces Servlet</servlet-name>
	<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet>
	<servlet-name>Push Servlet</servlet-name>
	<servlet-class>org.primefaces.push.PushServlet</servlet-class>
	<init-param>
		<param-name>org.atmosphere.cpr.broadcasterCacheClass</param-name>
		<param-value>org.atmosphere.cache.UUIDBroadcasterCache</param-value>
	</init-param>
	<load-on-startup>2</load-on-startup>
	<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
	<servlet-name>Push Servlet</servlet-name>
	<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
JSF page

Code: Select all

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
>
<f:view contentType="text/html">
    <ui:composition template="/xhtml/template/layout.xhtml">
        <ui:define name="headTitle">
            <h:outputText value="Push POC"/>
        </ui:define>



        <ui:define name="center">
            <h:form>
                <p:commandButton actionListener="#{pushDemoController.send2}" value="Message simple : /notify/#{request.userPrincipal.name}"/>

            </h:form>
            <p:growl widgetVar="growlPush" showDetail="true"/>
            <p:socket channel="/notify/#{request.userPrincipal.name}" onMessage="handleMessage" />

            <script type="text/javascript">
                function handleMessage(message) {
                    PF('growlPush').show([message]);
                }
            </script>
        </ui:define>
    </ui:composition>
</f:view>
</html>
Managed bean

Code: Select all

import com.agipi.web.util.FacesUtils;
import org.primefaces.push.EventBus;
import org.primefaces.push.EventBusFactory;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import java.io.Serializable;

/**
 * Controller servant d'exemple à l'utilisation du framework Push de primefaces.
 * Created by devbouvier on 25/05/2016.
 */
@SuppressWarnings("serial")
@ManagedBean
@ApplicationScoped
public class PushDemoController implements Serializable {

    public void send2() {
        EventBus eventBus2 = EventBusFactory.getDefault().eventBus();
        String channel = "/notify/" + FacesUtils.getPrincipal().getName();
        eventBus2.publish(channel, "Message envoyé ");

    }
}
Push endpoint

Code: Select all

package com.agipi.g2a.tiana.web.controller.demo;

import com.agipi.web.util.FacesUtils;
import org.primefaces.push.EventBus;
import org.primefaces.push.RemoteEndpoint;
import org.primefaces.push.annotation.*;
import org.primefaces.push.impl.JSONEncoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.faces.application.FacesMessage;
import javax.inject.Inject;
import java.io.Serializable;


@PushEndpoint("/notify/{user}")
@Singleton
public class PushDemoResource implements Serializable {
    private static final Logger LOGGER = LoggerFactory.getLogger(PushDemoResource.class);

    @Inject
    private EventBus eventBus;
    @Inject
    private RemoteEndpoint endpoint;

    @PathParam(value = "user")
    private String user;

    @OnMessage(encoders = {JSONEncoder.class})
    public FacesMessage onMessage(String message) {
        LOGGER.info("Message recu : {} pour {}", message, user);
        return FacesUtils.getMessage("Notification " + message + " pour " + user, FacesMessage.SEVERITY_INFO);
    }

    @OnClose
    public void onClose(RemoteEndpoint r, EventBus e) {
        LOGGER.info("Push Demo onClose : [remoteEndpoint={},eventBus={}]", r, e);

    }

    @OnOpen
    public void onOpen(RemoteEndpoint r, EventBus e) {
        LOGGER.info("Push Demo onOpen : [remoteEndpoint={},eventBus={}]", r, e);
    }

}

Atmosphere logs on startup

Code: Select all

18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AbstractApplicationContext.java:prepareRefresh:510) Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@e123f5b: startup date [Thu May 26 18:03:59 CEST 2016]; parent: Root WebApplicationContext
18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AutowiredAnnotationBeanPostProcessor.java:<init>:153) JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:autoConfigureService:2828) Atmosphere is using org.atmosphere.cpr.DefaultAnnotationProcessor for processing annotation
18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (DefaultAnnotationProcessor.java:configure:151) AnnotationProcessor class org.atmosphere.cpr.DefaultAnnotationProcessor$ServletContainerInitializerAnnotationProcessor being used
18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AnnotationHandler.java:handleAnnotation:80) Found Annotation in class org.primefaces.push.impl.PushEndpointInterceptor being scanned: interface org.atmosphere.config.service.AtmosphereInterceptorService
18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AnnotationHandler.java:handleAnnotation:80) Found Annotation in class org.primefaces.push.impl.PushEndpointProcessor being scanned: interface org.atmosphere.config.AtmosphereAnnotation
18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AnnotationHandler.java:handleAnnotation:80) Found Annotation in class org.primefaces.push.impl.PushEndpointMapper being scanned: interface org.atmosphere.config.service.EndpointMapperService
18:03:59 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AnnotationHandler.java:handleAnnotation:80) Found Annotation in class com.agipi.g2a.tiana.web.controller.demo.PushDemoResource being scanned: interface org.primefaces.push.annotation.PushEndpoint
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (ForkJoinPool.java:<init>:48) Using ForkJoinPool  java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power.
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addAtmosphereHandler:638) Installed AtmosphereHandler org.primefaces.push.impl.PushEndpointHandlerProxy mapped to context-path /notify/{user} and Broadcaster Class org.atmosphere.cpr.DefaultBroadcaster
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addAtmosphereHandler:646) Installed AtmosphereInterceptor [@PushEndpoint Interceptor] mapped to AtmosphereHandler org.primefaces.push.impl.PushEndpointHandlerProxy
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:autoDetectWebSocketHandler:2154) Auto detecting WebSocketHandler in /WEB-INF/classes/
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:initWebSocket:1762) Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (JSR356AsyncSupport.java:<init>:68) JSR 356 Mapping path /primepush
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:configureAtmosphereInterceptor:1226) Installing Default AtmosphereInterceptors
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:newAInterceptor:1245) 	org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:configureAtmosphereInterceptor:1235) Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them.
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor Atmosphere LifeCycle with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor  Track Message Size Interceptor using | with priority BEFORE_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor @PushEndpoint Interceptor with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (HeartbeatInterceptor.java:configure:169) HeartbeatInterceptor configured with padding value 'X', client frequency 60 seconds and server frequency 1 seconds
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:addInterceptorToAllWrappers:2619) Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT 
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1039) Using EndpointMapper class org.primefaces.push.impl.PushEndpointMapper
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1048) Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1053) Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1054) Broadcaster Shared List Resources: false
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1055) Broadcaster Polling Wait Time 100
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1056) Shared ExecutorService supported: true
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1065) Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1072) Async I/O Thread Pool Size: 200
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1078) Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1079) Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1080) Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1090) Invoke AtmosphereInterceptor on WebSocket message true
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1091) HttpSession supported: false
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1093) Atmosphere is using Spring Web ObjectFactory for dependency injection and object creation
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1094) Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/8.0.33 using javax.servlet/3.0 and jsr356/WebSocket API
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1096) Atmosphere Framework 2.4.2 started.
18:04:00 | [ INFO] | [RMI TCP Connection(3)-127.0.0.1] (AtmosphereFramework.java:info:1098) 

	For Atmosphere Framework Commercial Support, visit 
	http://www.async-io.org/ or send an email to support@async-io.org

[2016-05-26 06:04:00,354] Artifact tiana-webui (2):war exploded: Artifact is deployed successfully
[2016-05-26 06:04:00,355] Artifact tiana-webui (2):war exploded: Deploy took 33 427 milliseconds
18:04:00 | [ INFO] | [Thread-15] (AtmosphereFramework.java:run:1174) Latest version of Atmosphere's JavaScript Client 2.3.1
18:04:00 | [ INFO] | [Thread-15] (AtmosphereFramework.java:run:1182) 

	Atmosphere Framework Updates:
	Major Update available (new features): 2.4.3

Server stackTrace

Code: Select all

17:44:17 | [ WARN] | [http-apr-8081-exec-8] (DefaultBroadcaster.java:addAtmosphereResource:1366) Duplicate resource d9a48c99-dc69-4c38-8a58-b40908fb67fa. Could be caused by a dead connection not detected by your server. Replacing the old one with the fresh one
17:44:17 | [ERROR] | [http-apr-8081-exec-8] (AtmosphereFramework.java:doCometSupport:2307) AtmosphereFramework exception
java.lang.IllegalStateException: A filter or servlet of the current chain does not support asynchronous operations.
	at org.apache.catalina.connector.Request.startAsync(Request.java:1621)
	at org.apache.catalina.connector.RequestFacade.startAsync(RequestFacade.java:1037)
	at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:398)
	at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:398)
	at org.springframework.security.web.context.HttpSessionSecurityContextRepository$Servlet3SaveToSessionRequestWrapper.startAsync(HttpSessionSecurityContextRepository.java:246)
	at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:398)
	at org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper.startAsync(HttpServlet3RequestFactory.java:173)
	at org.atmosphere.cpr.AtmosphereRequestImpl.startAsync(AtmosphereRequestImpl.java:615)
	at org.atmosphere.container.Servlet30CometSupport.suspend(Servlet30CometSupport.java:95)
	at org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:70)
	at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2285)
	at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:191)
	at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:177)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:65)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

	...
	goes on and on
	...
	
17:44:18 | [ WARN] | [http-apr-8081-exec-1] (DefaultBroadcaster.java:addAtmosphereResource:1366) Duplicate resource d9a48c99-dc69-4c38-8a58-b40908fb67fa. Could be caused by a dead connection not detected by your server. Replacing the old one with the fresh one
17:44:18 | [ERROR] | [http-apr-8081-exec-1] (AtmosphereFramework.java:doCometSupport:2307) AtmosphereFramework exception
java.lang.IllegalStateException: A filter or servlet of the current chain does not support asynchronous operations.
	at org.apache.catalina.connector.Request.startAsync(Request.java:1621)
	at org.apache.catalina.connector.RequestFacade.startAsync(RequestFacade.java:1037)
	at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:398)
	at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:398)
	at org.springframework.security.web.context.HttpSessionSecurityContextRepository$Servlet3SaveToSessionRequestWrapper.startAsync(HttpSessionSecurityContextRepository.java:246)
	at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:398)
	at org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper.startAsync(HttpServlet3RequestFactory.java:173)
	at org.atmosphere.cpr.AtmosphereRequestImpl.startAsync(AtmosphereRequestImpl.java:615)
	at org.atmosphere.container.Servlet30CometSupport.suspend(Servlet30CometSupport.java:95)
	at org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:70)
	at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2285)
	at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:191)
	at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:177)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:65)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
26-May-2016 17:44:18.151 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
26-May-2016 17:44:18.152 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-apr-8081"]
26-May-2016 17:44:18.204 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-apr-8009"]
26-May-2016 17:44:18.255 INFO [main] org.apache.catalina.core.StandardService.stopInternal Arrêt du service Catalina
26-May-2016 17:44:18.289 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [jamon] appears to have started a thread named [JamonDataPersisterTimerTask-saveJamonData] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.util.TimerThread.mainLoop(Timer.java:552)
 java.util.TimerThread.run(Timer.java:505)
17:44:18 | [ INFO] | [localhost-startStop-2] (AbstractApplicationContext.java:doClose:862) Closing Root WebApplicationContext: startup date [Thu May 26 17:41:15 CEST 2016]; root of context hierarchy
17:44:18 | [ INFO] | [localhost-startStop-2] (AbstractEntityManagerFactoryBean.java:destroy:462) Closing JPA EntityManagerFactory for persistence unit 'TIANA'
17:44:18 | [ INFO] | [localhost-startStop-2] (AbstractEntityManagerFactoryBean.java:destroy:462) Closing JPA EntityManagerFactory for persistence unit 'DISTRIB'
26-May-2016 17:44:18.552 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [tiana-webui] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@4aab79c8]) and a value of type [org.atmosphere.cpr.AtmosphereResourceImpl] (value [AtmosphereResource{
	 uuid=d9a48c99-dc69-4c38-8a58-b40908fb67fa,
	 transport=LONG_POLLING,
	 isInScope=true,
	 isResumed=false,
	 isCancelled=true,
	 isSuspended=false,
	 broadcasters=/notify/BOUVIERM,
	 isClosedByClient=false,
	 isClosedByApplication=false,
	 action=Action{timeout=-1, type=CANCELLED}}]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

	...
	goes on and on
	...

26-May-2016 17:44:19.137 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [tiana-webui] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@25d1d6d9]) and a value of type [org.atmosphere.cpr.AtmosphereResourceImpl] (value [AtmosphereResource{
	 uuid=d9a48c99-dc69-4c38-8a58-b40908fb67fa,
	 transport=LONG_POLLING,
	 isInScope=true,
	 isResumed=false,
	 isCancelled=true,
	 isSuspended=false,
	 broadcasters=/notify/BOUVIERM,
	 isClosedByClient=false,
	 isClosedByApplication=false,
	 action=Action{timeout=-1, type=CANCELLED}}]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
26-May-2016 17:44:19.173 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-apr-8081"]
26-May-2016 17:44:19.239 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-apr-8009"]
26-May-2016 17:44:19.302 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-apr-8081"]
26-May-2016 17:44:19.302 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-apr-8009"]
Disconnected from server
Last edited by marc.bouvier.agipi on 27 May 2016, 15:25, edited 1 time in total.

marc.bouvier.agipi
Posts: 4
Joined: 25 May 2016, 17:03

27 May 2016, 15:25

After digging a little bit, it seems that the huge amount of requests was the IE9 client trying to reconnect.

I found what was my problem. I forgot to add <async-supported>true</async-supported> on several <servlet> and <filter> definitions.

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 24 guests