2015-08-12 5 views
6

ich eine einfache Testanwendung erstellt:Vaadin Drücken nicht mit tomcat8 verfügbar eingebettet

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; 
    } 
} 

Wenn ich dies von Eclipse starten, alles funktioniert gut, aber wenn ich dies zu einem runnable jar exportieren und führen Sie es ich diese bekommen Fehler:

HTTP-Status 500 - com.vaadin.server.ServiceException: java.lang.IllegalStateException: Push ist nicht verfügbar. Weitere Informationen finden Sie in vorherigen Protokollnachrichten.

Hier ist der gesamte 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. 
================================================================= 

Ich versuchte javax.websocket-api-1.1.jar Bibliotheken aber nichts geändert, immer noch denselben Fehler hinzuzufügen.

Ich weiß nicht, wo das Problem ist, vielleicht muss ich etwas anderes hinzufügen, aber im Moment weiß ich nicht was.

EDIT:

Ich verwende Maven/Gradle nicht, denn die tomcat8 ich on tomcat8 website alles benötigt, heruntergeladen eingebettet und für die Testanwendung Krieg ich einen meiner Projekte, arbeiten gut mit Tomcat8 nicht eingebettet.

+0

Sorry für die triviale Frage, aber haben Sie Ihrem Projekt (Maven, Gradle ...) vaadin-push hinzugefügt? Wenn Sie maven verwenden, können Sie uns auch einen Abhängigkeitsbaum geben. – jsosnowski

Antwort

1

Ich denke, dieses Problem wird von jeder Jetty-Bibliotheken im Classpath verursacht. Sie könnten in jedem anderen Java-Jar sein - also sollten Sie alle Abhängigkeiten Ihrer Anwendung mit einem Tool (sogar IDE integriert) analysieren.

Mein Verdacht basiert auch auf Vaadin Configuration tutorial. Bitte schauen Sie dort - vor allem bei Tomcat 8 section.

Edit: Wenn Vaadin Push aktivieren, schauen Sie bitte auch auf wiki. Es werden alle Änderungen beschrieben, die im Projekt vorgenommen werden sollen (Abhängigkeiten, UI-Annotation, web.xml).

+0

Ich habe jedes Glas, das ich im Eclipse-Projekt habe, in das Glas gegeben. Ans die Anwendung funktioniert gut in Tomcat8 Installation. Also Push-Konfiguration ist gut:/ – Supamiu

+1

Ok, ich verstehe. Ich habe dein Problem reproduziert. Meine Beispiel-Push-Anwendung funktioniert auf normalem Tomcat 8 gut. Aber wenn ich Ihren Code benutzte und versuchte, ihn auf eingebettetem Tomcat auszuführen, scheitert es (aber mit einer anderen Ausnahme). Es war ein Atmosphärenproblem. Ich kann bis jetzt keine Lösung finden. – jsosnowski