2015-08-12 1 views
6

Я создал простое тестовое приложение:Vaadin Нажмите не доступен с tomcat8 встроенной

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

Когда я начинаю это от затмения, все работает отлично, но когда я экспортировать это в работоспособную банку и запустить его, я получаю это ошибка:

HTTP Status 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. 
================================================================= 

Я пытался добавить javax.websocket-Апи-1.1.jar библиотек, но ничего не изменилось, все еще такая же ошибка.

Я не знаю, где проблема, может быть, мне нужно добавить что-то еще, но на данный момент я не знаю, что.

EDIT:

Я не использую Maven/Gradle, для tomcat8 внедренный Я скачал on tomcat8 website все необходимое, и для войны тест приложения я использовал один из моих проектов, работает отлично с Tomcat8 не внедренными.

+0

Извините за тривиальный вопрос, но правильно ли вы добавили vaadin-push в свой проект (Maven, Gradle ...)? Если вы используете maven, вы можете дать нам также дерево зависимостей. – jsosnowski

ответ

1

Я думаю, что эта проблема вызвана любыми библиотеками Jetty, включенными в classpath. Они могут находиться внутри любой другой java-банки, поэтому вам следует анализировать все зависимости вашего приложения с помощью какого-либо инструмента (даже интегрированного интегрированного IDE).

Мои подозрения также основаны на Vaadin Configuration tutorial. Пожалуйста, посмотрите там - особенно на Tomcat 8 section.

Редактировать: При включении Vaadin Push, пожалуйста, обратитесь к официальному номеру wiki. Здесь описаны все изменения, которые должны быть сделаны в проекте (зависимости, аннотация пользовательского интерфейса, web.xml).

+0

Я добавил все банки, которые у меня есть в проекте eclipse, в банку. Приложение ans отлично работает при установке tomcat8. Поэтому конфигурация push хороша:/ – Supamiu

+1

Хорошо, я понимаю. Я воспроизвел вашу проблему. Моя программа push push работает нормально на обычном Tomcat 8. Но когда я использовал ваш код и попытался запустить его на встроенном Tomcat, он терпит неудачу (но с каким-то другим исключением). Это была проблема атмосферы. Пока я не могу найти решения. – jsosnowski

Смежные вопросы