VAADIN Push not available with built-in tomcat8

I created a simple test application:

import java.util.logging.Logger; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; public class Main { private final static Logger LOGGER = Logger.getLogger(Main.class.getName()); private final static String mWorkingDir = System.getProperty("java.io.tmpdir"); private static Tomcat tomcat = null; public static void main(String[] args) { tomcat = new Tomcat(); tomcat.setPort(8080); tomcat.setBaseDir(mWorkingDir); tomcat.getHost().setAppBase(mWorkingDir); tomcat.getHost().setAutoDeploy(true); tomcat.getHost().setDeployOnStartup(true); try { tomcat.start(); } catch (LifecycleException e) { LOGGER.severe("Tomcat could not be started."); e.printStackTrace(); } LOGGER.info("Tomcat started on " + tomcat.getHost()); // Alternatively, you can specify a WAR file as last parameter in the following call eg "C:\\Users\\admin\\Desktop\\app.war" Context appContext = Main.getTomcat().addWebapp(Main.getTomcat().getHost(), "/app", System.getProperty("user.dir")+"\\Whys.war"); LOGGER.info("Deployed " + appContext.getBaseName() + " as " + appContext.getBaseName()); tomcat.getServer().await(); } public static Tomcat getTomcat(){ return tomcat; } } 

When I run this from eclipse everything works fine, but when I export it to an executable jar and run it, I get this error:

HTTP Status 500 - com.vaadin.server.ServiceException: java.lang.IllegalStateException: Push is not available. For more information, see Previous Journal Messages.

Here is the whole call stack:

 GRAVE: Failed to initialize Atmosphere Framework java.lang.IllegalArgumentException: Unable to createclass org.atmosphere.container.JSR356AsyncSupport at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:229) at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:288) at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:274) at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:1591) at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:717) at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:614) at com.vaadin.server.communication.PushRequestHandler.<init>(PushRequestHandler.java:121) at com.vaadin.server.VaadinServletService.createRequestHandlers(VaadinServletService.java:82) at com.vaadin.server.VaadinService.init(VaadinService.java:186) at com.vaadin.server.VaadinServlet.createServletService(VaadinServlet.java:258) at com.vaadin.server.VaadinServlet.init(VaadinServlet.java:164) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 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:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:225) ... 28 more Caused by: java.lang.IllegalStateException: ServerContainer is null at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:43) ... 33 more ao¹t 12, 2015 8:32:04 PM com.vaadin.server.VaadinServletService createRequestHandlers AVERTISSEMENT: Error initializing Atmosphere. Push will not work. com.vaadin.server.ServiceException: Atmosphere init failed at com.vaadin.server.communication.PushRequestHandler.<init>(PushRequestHandler.java:129) at com.vaadin.server.VaadinServletService.createRequestHandlers(VaadinServletService.java:82) at com.vaadin.server.VaadinService.init(VaadinService.java:186) at com.vaadin.server.VaadinServlet.createServletService(VaadinServlet.java:258) at com.vaadin.server.VaadinServlet.init(VaadinServlet.java:164) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 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:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: javax.servlet.ServletException: java.lang.IllegalArgumentException: Unable to createclass org.atmosphere.container.JSR356AsyncSupport at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:741) at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:614) at com.vaadin.server.communication.PushRequestHandler.<init>(PushRequestHandler.java:121) ... 22 more Caused by: java.lang.IllegalArgumentException: Unable to createclass org.atmosphere.container.JSR356AsyncSupport at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:229) at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:288) at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:274) at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:1591) at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:717) ... 24 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:225) ... 28 more Caused by: java.lang.IllegalStateException: ServerContainer is null at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:43) ... 33 more ao¹t 12, 2015 8:33:08 PM com.vaadin.server.VaadinServletService ensurePushAvailable AVERTISSEMENT: ================================================================= Atmosphere could not be loaded. When using push with Vaadin, the Atmosphere framework must be present on the classpath. If using a dependency management system, please add a dependency to vaadin-push. If managing dependencies manually, please make sure Atmosphere 2.1.2.vaadin6 is included on the classpath. Will fall back to using PushMode.DISABLED. ================================================================= 

I tried adding javax.websocket-api-1.1.jar to the libraries, but nothing changed, the same error.

I don’t know where the problem is, maybe I need to add something else, but at the moment I don’t know what.

EDIT:

I don’t use Maven / Gradle, for the built-in tomcat8 I uploaded everything necessary for the tomcat8 website and for the war test application I used one of my projects, working fine with Tomcat8, not built-in.

+6
source share
1 answer

I think this problem is caused by any Jetty libraries included in the classpath. They can be located in any other java-bank, so you should analyze all the dependencies of your application using any tool (even an integrated IDE).

My suspicions are also based on the Vaadin Configuration tutorial . Please take a look there, especially in the Tomcat 8 section .

Edit: when you enable Vaadin Push, please also see the official wiki . Here, all the changes that must be made in the project are described (dependencies, user interface annotation, web.xml).

+1
source

All Articles