Enabling Push in Jboss EAP 6.0

Hello All :slight_smile:

I am struggling now with enabling Atmosphere/Comet in my Vaadin application.
First of all I will put what I found in logs:

12:34:57,567 INFO  [org.apache.coyote.http11.Http11AprProtocol]
 (MSC service thread 1-2) Starting Coyote HTTP/1.1 on http-/127.0.0.1:8080
...
12:35:40,822 SEVERE [org.atmosphere.container.JBossWebCometSupport]
 (http-/127.0.0.1:8080-2) HttpEvent is null, JBoss APR Not Properly installed
12:35:40,824 WARNING [org.atmosphere.cpr.AtmosphereFramework]
 (http-/127.0.0.1:8080-2) 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?
12:35:40,837 SEVERE [org.atmosphere.cpr.AtmosphereFramework]
 (http-/127.0.0.1:8080-2) 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.<clinit>(JBossWebCometSupport.java:51) [atmosphere-runtime-native-2.2.4.vaadin5.jar:2.2.4.vaadin5]

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

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

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

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

    at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:230) [atmosphere-runtime-native-2.2.4.vaadin5.jar:2.2.4.vaadin5]

    at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveNativeCometSupport(DefaultAsyncSupportResolver.java:306) [atmosphere-runtime-native-2.2.4.vaadin5.jar:2.2.4.vaadin5]

    at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:286) [atmosphere-runtime-native-2.2.4.vaadin5.jar:2.2.4.vaadin5]

    at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:1870) [atmosphere-runtime-native-2.2.4.vaadin5.jar:2.2.4.vaadin5]

    at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:888) [atmosphere-runtime-native-2.2.4.vaadin5.jar:2.2.4.vaadin5]

    at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:780) [atmosphere-runtime-native-2.2.4.vaadin5.jar:2.2.4.vaadin5]

    at com.vaadin.server.communication.PushRequestHandler.<init>(PushRequestHandler.java:126) [vaadin-server-7.4.4.jar:7.4.4]

    at com.vaadin.server.VaadinServletService.createRequestHandlers(VaadinServletService.java:80) [vaadin-server-7.4.4.jar:7.4.4]

    at com.vaadin.server.VaadinService.init(VaadinService.java:188) [vaadin-server-7.4.4.jar:7.4.4]

    at com.vaadin.server.VaadinServlet.createServletService(VaadinServlet.java:303) [vaadin-server-7.4.4.jar:7.4.4]

    at com.vaadin.server.VaadinServlet.init(VaadinServlet.java:209) [vaadin-server-7.4.4.jar:7.4.4]

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

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

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

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

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

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

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

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

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

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

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

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

    at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_40]


12:35:40,960 WARNING [org.atmosphere.cpr.AtmosphereFramework]
 (http-/127.0.0.1:8080-2) Using org.atmosphere.container.BlockingIOCometSupport

This is my log file. Now configuration (standalone.xml) of Jboss EAP 6.0

<subsystem xmlns="urn:jboss:domain:web:1.2" default-virtual-server="default-host" native="true"> <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> <virtual-server name="default-host" enable-welcome-root="false"> <alias name="localhost"/> <alias name="example.com"/> </virtual-server> </subsystem> Now list of WEB-INF/lib folder in my app:

aceeditor-0.8.14.jar
aopalliance-1.0.jar
atmosphere-compat-tomcat-2.0.1-vaadin1.jar
atmosphere-compat-tomcat7-2.0.1-vaadin1.jar
atmosphere-runtime-native-2.2.4.vaadin5.jar
columnlayout-addon-0.1.7.jar
commons-codec-1.10.jar
commons-httpclient-3.1.jar
commons-io-1.3.2.jar
commons-lang3-3.3.2.jar
commons-logging-1.2.jar
confirmdialog-2.1.2.jar
diffutils-1.2.1.jar
flute-1.3.0.gg2.jar
gson-2.2.4.jar
guava-16.0.1.vaadin1.jar
guava-18.0.jar
hamcrest-core-1.3.jar
httpclient-4.3.6.jar
httpcore-4.3.3.jar
jboss-as-websockets-0.5.jar
JsonContainer-0.1.jar
jsoup-1.8.1.jar
junit-4.12.jar
mbassador-1.2.1.jar
ojdbc7.jar
sac-1.3.jar
slf4j-api-1.6.1.jar
spring-aop-4.1.0.RELEASE.jar
spring-beans-4.1.0.RELEASE.jar
spring-context-4.1.0.RELEASE.jar
spring-core-4.1.0.RELEASE.jar
spring-expression-4.1.0.RELEASE.jar
spring-jdbc-4.1.6.RELEASE.jar
spring-test-4.1.6.RELEASE.jar
spring-tx-4.1.6.RELEASE.jar
spring-web-4.1.0.RELEASE.jar
streamhtmlparser-jsilver-0.0.10.vaadin1.jar
vaadin-client-7.4.4.jar
vaadin-push-7.4.4.jar
vaadin-sass-compiler-0.9.12.jar
vaadin-server-7.4.4.jar
vaadin-shared-7.4.4.jar
vaadin-slf4j-jdk14-1.6.1.jar
vaadin-themes-7.4.4.jar
validation-api-1.0.0.GA-sources.jar
validation-api-1.0.0.GA.jar
wizards-for-vaadin-1.1.0.jar

All right after this whole bunch of code list, doea anyone could tell what I do wrong? I cannot launch Comet in my enviroment. :frowning:

Looking forward to hearing from you guys! :slight_smile:

Kamil

Hi, have you checked out
https://vaadin.com/wiki/-/wiki/Main/Working+around+push+issues
?

Unfortunately I have to use JBoss EAP 6.0 which does not support Websocekts :confused: I cannot use NIO because EAP 6.0 does not support it. I tried to use this instructions
https://github.com/Atmosphere/atmosphere/wiki/Installing-AtmosphereServlet-with-or-without-native-support
but it seems likt it fails :confused: I asked maybe I missed something. :slight_smile:

I’m not actually sure that the native part will work with Vaadin due to the way Vaadin uses Atmosphere. From what I see, the native package contains an AtmosphereServlet which implements HttpEventServlet that old JBoss use for providing async-like support. Vaadin however uses its own servlet and only uses Atmosphere through its API, so my guess would be that it won’t work as VaadinServlet does not implement HttpEventServlet.

if you are really into hacking, you might be able to combine the native AtmosphereServlet’s event method (from HttpEventServlet) with VaadinServlet and PushRequestHandler and make it work. No guarantees…