Vaadin 8 migration and Atmosphere problem

I am updating to Vaadin 8 and migrating my code via Vaadin 7 compatibility and am now having issues with PUSH / Atmosphere.

My application as two UIs each with their own servlet (public and admin apps). The public app is the only UI to be annotated with @Push(transport = Transport.LONG_POLLING).
I am not sure if the latest is incompatible with multiple servlets or ther needs to be some additional configuration or migration that I need to do. Any ideas?

[code]
9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addAtmosphereHandler
INFO: Installed AtmosphereHandler com.vaadin.server.communication.PushAtmosphereHandler mapped to context-path: /*
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addAtmosphereHandler
INFO: Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.server.communication.PushAtmosphereHandler
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework autoConfigureService
INFO: Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation
Apr 12, 2017 9:24:00 PM org.atmosphere.util.ForkJoinPool
INFO: Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power.
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework initWebSocket
INFO: Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol
Apr 12, 2017 9:24:00 PM org.atmosphere.util.IOUtils guestRawServletPath
WARNING: More than one Servlet Mapping defined. WebSocket may not work org.apache.catalina.core.ApplicationServletRegistration@6a0e3b9c
Apr 12, 2017 9:24:00 PM org.atmosphere.container.JSR356AsyncSupport
INFO: JSR 356 Mapping path /VAADIN
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework configureAtmosphereInterceptor
INFO: Installing Default AtmosphereInterceptors
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response’s Headers Interceptor
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework configureAtmosphereInterceptor
INFO: Dropping Interceptor org.atmosphere.interceptor.HeartbeatInterceptor
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework newAInterceptor
INFO: org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework configureAtmosphereInterceptor
INFO: Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them.
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor Default Response’s Headers Interceptor with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Broadcaster Shared List Resources: false
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Broadcaster Polling Wait Time 100
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Shared ExecutorService supported: true
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Async I/O Thread Pool Size: 200
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Invoke AtmosphereInterceptor on WebSocket message true
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: HttpSession supported: true
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/8.0.39 using javax.servlet/3.0 and jsr356/WebSocket API
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework info
INFO: Atmosphere Framework 2.4.5.vaadin2 started.
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addInterceptorToAllWrappers
INFO: Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addAtmosphereHandler
INFO: Installed AtmosphereHandler com.vaadin.server.communication.PushAtmosphereHandler mapped to context-path: /*
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework addAtmosphereHandler
INFO: Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.server.communication.PushAtmosphereHandler
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework autoConfigureService
INFO: Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation
Apr 12, 2017 9:24:00 PM org.atmosphere.util.ForkJoinPool
INFO: Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power.
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework initWebSocket
INFO: Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol
Apr 12, 2017 9:24:00 PM org.atmosphere.util.IOUtils guestRawServletPath
SEVERE:
java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1439)
at java.util.HashMap$KeyIterator.next(HashMap.java:1461)
at org.atmosphere.util.IOUtils.guestRawServletPath(IOUtils.java:283)
at org.atmosphere.util.IOUtils.guestServletPath(IOUtils.java:248)
at org.atmosphere.container.JSR356AsyncSupport.(JSR356AsyncSupport.java:63)
at org.atmosphere.container.JSR356AsyncSupport.(JSR356AsyncSupport.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:234)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:306)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:292)
at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:2079)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:914)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:838)
at com.vaadin.server.communication.PushRequestHandler.initAtmosphere(PushRequestHandler.java:216)
at com.vaadin.server.communication.JSR356WebsocketInitializer.initAtmosphereForVaadinServlet(JSR356WebsocketInitializer.java:152)
at com.vaadin.server.communication.JSR356WebsocketInitializer.contextInitialized(JSR356WebsocketInitializer.java:118)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.DefaultAsyncSupportResolver newCometSupport
WARNING: Failed to create AsyncSupport class: class org.atmosphere.container.JSR356AsyncSupport, error: java.lang.reflect.InvocationTargetException
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.DefaultAsyncSupportResolver newCometSupport
SEVERE: Real error: Unable to configure jsr356 at that stage
java.lang.IllegalStateException: Unable to configure jsr356 at that stage
at org.atmosphere.util.IOUtils.guestRawServletPath(IOUtils.java:290)
at org.atmosphere.util.IOUtils.guestServletPath(IOUtils.java:248)
at org.atmosphere.container.JSR356AsyncSupport.(JSR356AsyncSupport.java:63)
at org.atmosphere.container.JSR356AsyncSupport.(JSR356AsyncSupport.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:234)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:306)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:292)
at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:2079)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:914)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:838)
at com.vaadin.server.communication.PushRequestHandler.initAtmosphere(PushRequestHandler.java:216)
at com.vaadin.server.communication.JSR356WebsocketInitializer.initAtmosphereForVaadinServlet(JSR356WebsocketInitializer.java:152)
at com.vaadin.server.communication.JSR356WebsocketInitializer.contextInitialized(JSR356WebsocketInitializer.java:118)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.DefaultAsyncSupportResolver resolveMultipleNativeSupportConflict
WARNING: Found multiple containers, please specify which one to use: org.atmosphere.container.Tomcat7CometSupport, org.atmosphere.container.TomcatCometSupport, org.atmosphere.container.NettyCometSupport, until you do, Atmosphere will use:class org.atmosphere.container.Tomcat7CometSupport
Apr 12, 2017 9:24:00 PM org.atmosphere.cpr.AtmosphereFramework configureAtmosphereInterceptor
INFO: Installing Default AtmosphereInterceptors
[/code]

So I debugged and stepped through and newCometSupport it executed twice. The first time it find my servlet “bvapps” and gets a ServletRegistration for Atmosphere. Then the second time around it finds one called “MyUIServlet” with no registration of Atmosphere which fails on 283. I do not have a class or servlet defined for “MyUIServlet” and have no idea where that is coming from.

It turned out to bean issue with the updated PageTable Add-on, which improperly includes the example UI in the jar.

https://github.com/Peppe/PagedTable/issues/24