VAADIN推送不适用于嵌入式tomcat8

VAADIN推送不适用于嵌入式tomcat8,vaadin,vaadin7,embedded-tomcat-8,vaadin-push,Vaadin,Vaadin7,Embedded Tomcat 8,Vaadin Push,我创建了一个简单的测试应用程序: 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.getLog

我创建了一个简单的测试应用程序:

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 e.g. "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;
  }
}
当我从eclipse启动时,一切正常,但当我将其导出到可运行的jar并运行它时,会出现以下错误:

HTTP状态500-com.vaadin.server.ServiceException:java.lang.IllegalStateException:Push不可用。有关更多信息,请参阅前面的日志消息

以下是整个调用堆栈:

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.
=================================================================
GRAVE:初始化大气框架失败
java.lang.IllegalArgumentException:无法创建类org.atmosphere.container.JSR356AsyncSupport
位于org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:229)
位于org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:288)
位于org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:274)
在org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer上(AtmosphereFramework.java:1591)
在org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:717)上
在org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:614)上
位于com.vaadin.server.communication.PushRequestHandler.(PushRequestHandler.java:121)
位于com.vaadin.server.VaadinServletService.createRequestHandlers(VaadinServletService.java:82)
位于com.vaadin.server.VaadinService.init(VaadinService.java:186)
位于com.vaadin.server.VaadinServlet.createServletService(VaadinServlet.java:258)
位于com.vaadin.server.VaadinServlet.init(VaadinServlet.java:164)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
位于org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
位于java.lang.Thread.run(未知源)
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:225)
... 28多
原因:java.lang.IllegalStateException:ServerContainer为空
位于org.atmosphere.container.JSR356AsyncSupport。(JSR356AsyncSupport.java:43)
... 33多
2015年12月12日上午8:32:04 com.vaadin.server.VaadinServletService createRequestHandlers
避免:初始化大气时出错。推不动。
com.vaadin.server.ServiceException:大气初始化失败
位于com.vaadin.server.communication.PushRequestHandler.(PushRequestHandler.java:129)
位于com.vaadin.server.VaadinServletService.createRequestHandlers(VaadinServletService.java:82)
位于com.vaadin.server.VaadinService.init(VaadinService.java:186)
位于com.vaadin.server.VaadinServlet.createServletService(VaadinServlet.java:258)
位于com.vaadin.server.VaadinServlet.init(VaadinServlet.java:164)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
位于org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源代码