Push not working in JBoss 7.1.3

Dear all,

It seems I cannot get push to work in Vaadin 7 (tried 7.1.11, 7.2.1, 7.3.0.alpha2, 7.3.0.alpha3) under JBoss 7.1.3. I get the exception trace that you can find below. The application starts nonetheless, but when I click on a button or anything it starts loading for a long long time, finally proceeding with an expected message from Notification.show(). I have tried the following things:

  1. change to use the Http11NioProtocol in standalone.xml, but this is only supported from JBoss 7.2 onwards (which is not available for free commercial use)
  2. change to use the Http11AprProtocol, but the exception persists claiming APR is not installed
  3. Installed the APR dll to d:\jboss-as-7.1.3\bin\ (this is the tcnative-1.dll library), but it seems to already exist in the modules/ directory somewhere as well
  4. changed to @Push(transport=STREAMING) but this also does not change anything
  5. added the initParams = { @WebInitParam(name = “org.atmosphere.useWebSocketAndServlet3”, value = “true”) } to the @WebServlet annotation6) tried to add to the ivy.xml to get support for websockets, or any push technology
  6. probably some things that I forgot.

I am at a loss and wonder if anyone has been able to get Push support working on JBoss 7.1.x? We cannot pay for using JBoss EAP, so using JBoss 7.2+ is not an option.

Hoping to get this working,

Roel

10:27:44,422 INFO [org.jboss.as.server]
(DeploymentScanner-threads - 1) JBAS018565: Replaced deployment “Test.war” with deployment “Test.war”
10:28:00,281 WARNING [com.vaadin.server.DefaultDeploymentConfiguration]

=================================================================
Vaadin is running in DEBUG MODE.
Add productionMode=true to web.xml to disable debug features.
To show debug window, add ?debug to your application URL.

10:28:00,314 INFO [org.atmosphere.cpr.AtmosphereFramework]
Installed AtmosphereHandler com.vaadin.server.communication.PushHandler$1 mapped to context-path: /*
10:28:00,314 INFO [org.atmosphere.cpr.AtmosphereFramework]
Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.server.communication.PushHandler$1
10:28:00,318 WARNING [org.atmosphere.cpr.AtmosphereFramework]
SessionSupport error. Make sure you define org.atmosphere.cpr.SessionSupport as a listener in web.xml instead
10:28:00,323 INFO [org.atmosphere.cpr.AtmosphereFramework]
Atmosphere is using org.atmosphere.cpr.DefaultAnnotationProcessor for processing annotation
10:28:00,324 INFO [org.atmosphere.cpr.DefaultAnnotationProcessor]
AnnotationProcessor class org.atmosphere.cpr.DefaultAnnotationProcessor$ServletContainerInitializerAnnotationProcessor being used
10:28:00,325 WARNING [org.atmosphere.cpr.DefaultAnnotationProcessor]
Unable to detect annotations. Application may fail to deploy.
10:28:00,353 INFO [org.atmosphere.cpr.AtmosphereFramework]
Auto detecting WebSocketHandler in /WEB-INF/classes/
10:28:00,373 INFO [org.atmosphere.cpr.AtmosphereFramework]
Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol
10:28:00,376 WARNING [org.atmosphere.cpr.DefaultAsyncSupportResolver]
Found multiple containers, please specify which one to use: org.atmosphere.container.JBossWebCometSupport, org.atmosphere.container.NettyCometSupport, until you do, Atmosphere will use:class org.atmosphere.container.JBossWebCometSupport
10:28:00,377 INFO [org.atmosphere.cpr.AtmosphereFramework]
Installing Default AtmosphereInterceptor
10:28:00,377 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support
10:28:00,378 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response’s Headers Interceptor
10:28:00,378 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support
10:28:00,379 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support
10:28:00,379 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support
10:28:00,379 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support
10:28:00,380 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support
10:28:00,381 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol
10:28:00,381 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor
10:28:00,381 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection
10:28:00,381 INFO [org.atmosphere.cpr.AtmosphereFramework]
org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor
10:28:00,381 INFO [org.atmosphere.cpr.AtmosphereFramework]
Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them.
10:28:00,382 INFO [org.atmosphere.cpr.AtmosphereFramework]
Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper
10:28:00,382 INFO [org.atmosphere.cpr.AtmosphereFramework]
Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache
10:28:00,382 INFO [org.atmosphere.cpr.AtmosphereFramework]
Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster
10:28:00,382 INFO [org.atmosphere.cpr.AtmosphereFramework]
Broadcaster Polling Wait Time 100
10:28:00,382 INFO [org.atmosphere.cpr.AtmosphereFramework]
Shared ExecutorService supported: true
10:28:00,382 INFO [org.atmosphere.cpr.AtmosphereFramework]
Messaging Thread Pool Size: Unlimited
10:28:00,383 INFO [org.atmosphere.cpr.AtmosphereFramework]
Async I/O Thread Pool Size: 200
10:28:00,383 INFO [org.atmosphere.cpr.AtmosphereFramework]
Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory
10:28:00,383 INFO [org.atmosphere.cpr.AtmosphereFramework]
Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor
10:28:00,383 INFO [org.atmosphere.cpr.AtmosphereFramework]
HttpSession supported: true
10:28:00,383 INFO [org.atmosphere.cpr.AtmosphereFramework]
Atmosphere is using DefaultAtmosphereObjectFactory for dependency injection and object creation
10:28:00,383 INFO [org.atmosphere.cpr.AtmosphereFramework]
Atmosphere is using async support: org.atmosphere.container.JBossWebCometSupport running under container: JBoss Web/7.0.17.Final
10:28:00,383 INFO [org.atmosphere.cpr.AtmosphereFramework]
Atmosphere Framework 2.1.2.vaadin2 started.
10:28:00,385 INFO [org.atmosphere.cpr.AtmosphereFramework]
Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT
10:28:00,386 INFO Initializing…
10:28:00,387 INFO [Test:YWebApplication]
Initializing Application: 0.0.1_DEV v0.0.1_DEV r3909M
10:28:00,387 INFO [Test:YWebApplication]
Built on: 10-06-2014T10:27:21
10:28:00,389 INFO [Test:YWebApplication]
Using server list: XXXXXXXXX
10:28:00,389 INFO [Test:YWebApplication]
Finished initialization of Test v0.0.1_DEV
10:28:02,027 SEVERE [org.atmosphere.container.JBossWebCometSupport]
HttpEvent is null, JBoss APR Not Properly installed
10:28:02,028 WARNING [org.atmosphere.cpr.AtmosphereFramework]
Failed using comet support: org.atmosphere.container.JBossWebCometSupport, error: JBoss failed to detect this is a Comet application because the APR Connector is not enabled.
Make sure atmosphere-compat-jboss.jar is not under your WEB-INF/lib and You must use the atmosphere-native-runtime dependency in order to use native Comet Support
there is no context.xml under WEB-INF Is the NIO or APR Connector enabled?
10:28:02,028 SEVERE [org.atmosphere.cpr.AtmosphereFramework]
If you have more than one Connector enabled, make sure they both use the same protocol, e.g NIO/APR or HTTP for all. If not, org.atmosphere.container.BlockingIOCometSupport will be used and cannot be changed.: java.lang.IllegalStateException: JBoss failed to detect this is a Comet application because the APR Connector is not enabled.
Make sure atmosphere-compat-jboss.jar is not under your WEB-INF/lib and You must use the atmosphere-native-runtime dependency in order to use native Comet Support
there is no context.xml under WEB-INF
at org.atmosphere.container.JBossWebCometSupport.(JBossWebCometSupport.java:49) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_51]

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [rt.jar:1.7.0_51]

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.7.0_51]

at java.lang.reflect.Constructor.newInstance(Constructor.java:526) [rt.jar:1.7.0_51]

at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:225) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveMultipleNativeSupportConflict(DefaultAsyncSupportResolver.java:316) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveNativeCometSupport(DefaultAsyncSupportResolver.java:300) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:279) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:1591) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:717) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:614) [atmosphere-runtime-2.1.2.vaadin2.jar:2.1.2.vaadin2]

at com.vaadin.server.communication.PushRequestHandler.<init>(PushRequestHandler.java:120) [vaadin-server-7.3.0.alpha3.jar:7.3.0.alpha3]

at com.vaadin.server.VaadinServletService.createRequestHandlers(VaadinServletService.java:92) [vaadin-server-7.3.0.alpha3.jar:7.3.0.alpha3]

at com.vaadin.server.VaadinService.init(VaadinService.java:180) [vaadin-server-7.3.0.alpha3.jar:7.3.0.alpha3]

at com.vaadin.server.VaadinServlet.createServletService(VaadinServlet.java:190) [vaadin-server-7.3.0.alpha3.jar:7.3.0.alpha3]

at com.vaadin.server.VaadinServlet.init(VaadinServlet.java:96) [vaadin-server-7.3.0.alpha3.jar:7.3.0.alpha3]

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.17.Final.jar:]

at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:952) [jbossweb-7.0.17.Final.jar:]

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:188) [jbossweb-7.0.17.Final.jar:]

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.17.Final.jar:]

at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165) [jboss-as-web-7.1.3.Final.jar:7.1.3.Final]

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.17.Final.jar:]

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.17.Final.jar:]

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.17.Final.jar:]

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372) [jbossweb-7.0.17.Final.jar:]

at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897) [jbossweb-7.0.17.Final.jar:]

at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:634) [jbossweb-7.0.17.Final.jar:]

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039) [jbossweb-7.0.17.Final.jar:]

at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]

10:28:02,030 WARNING [org.atmosphere.cpr.AtmosphereFramework]
Using org.atmosphere.container.BlockingIOCometSupport

Part of the UI code:

@Theme(“test”)
@Push()
public class TestUI extends UI
{

@WebServlet(value = "/*", asyncSupported = true, initParams = { @WebInitParam(name = "org.atmosphere.useWebSocketAndServlet3", value = "true") })
@VaadinServletConfiguration(productionMode = false, ui = TestUI.class, widgetset = "com.example.widgetset.TestWidgetset")
public static class Servlet extends VaadinServlet
{


14401.xml (15.6 KB)

bump

Does this provide any help: https://github.com/Atmosphere/atmosphere/wiki/Enabling-WebSocket-Support-in-JBoss-EAP-6.2-and-up ?

I get same error also with JBoss EAP 6.2. I have also tried dozens of things to solve it, but nothing seems to work. jboss-web.xml parameter enable-websockets doesn’t work at least in EAP 6.2.

So that website did not work. but I did progress a little bit.
I added the following combination of initparams to my configuration and now I can use Long polling in internet explorer. Chrome still does not work and gives me the red waiting indicator of death…somtimes after a long wait it works for a short time and then fails again. there are no error messages server side anymore, so that is a big improvement.

org.atmosphere.useWebSocketAndServlet3 true org.atmosphere.cpr.asyncSupport org.atmosphere.container.Servlet30CometSupport pushmode automatic 1 true true

Anyone has an idea why chrome is still refusing to work?

So I fixed this issue by setting the transport to LONG_POLLING and calling push once at the end of the init method in the UI. apparently this is necessary to initialize the connection? I think many developers do not notice this because they are pushing all the time… in my app the pushing only happens every now and then.

Suggestion:
Maybe it is good if the UI.doInit method that calls init() calls the push() method itself?

Hi Roel,

There shouldn’t be a need to do a manual push in UI.init; indeed, it should be a no-op at that point. Could you attach a complete test UI that works if you do the push but doesn’t if you don’t?

that’s going to be difficult. let me explain why.

when I use the example push applications all seems to be well. however, the application that I am working on has become quite large at this point and it’s all closed source. I actually don’t know whats causing the problem. A small test example that I write will simply work with and without… I may figure somehting out at some point and post it here.

thanks for the reply.