我想在Vaadin取代Tomcat。想用Under / Jetty / Netty替换它。目前我使用 Spring Boot 和取代雄猫与暗流。不幸的是,此设置禁用了Vaadin中的WEB_PUSH。有什么办法可以解决这个问题吗?或者是一种在vaadin中替换tomcat的方法?或者让vaadin webpush与undertow / netty / jetty一起工作?我真的需要更轻便的东西。雄猫很重。
如果我将tomcat替换为undertow,就会出现以下错误:
java.lang.IllegalStateException: Unable to configure jsr356 at that stage. ServerContainer is null
at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:58) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:47) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) ~[na:na]
at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:126) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:197) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:183) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:2078) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:908) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:832) ~[atmosphere-runtime-3.0.3.slf4jvaadin1.jar:3.0.3.slf4jvaadin1]
at com.vaadin.flow.server.communication.PushRequestHandler.initAtmosphere(PushRequestHandler.java:263) ~[flow-server-24.1.5.jar:24.1.5]
at com.vaadin.flow.server.communication.PushRequestHandler.<init>(PushRequestHandler.java:98) ~[flow-server-24.1.5.jar:24.1.5]
at com.vaadin.flow.server.VaadinServletService.createRequestHandlers(VaadinServletService.java:105) ~[flow-server-24.1.5.jar:24.1.5]
at com.vaadin.flow.server.VaadinService.init(VaadinService.java:229) ~[flow-server-24.1.5.jar:24.1.5]
at com.vaadin.flow.spring.SpringVaadinServletService.init(SpringVaadinServletService.java:101) ~[vaadin-spring-24.1.5.jar:na]
at com.vaadin.flow.spring.SpringServlet.createServletService(SpringServlet.java:115) ~[vaadin-spring-24.1.5.jar:na]
at com.vaadin.flow.server.VaadinServlet.createServletService(VaadinServlet.java:336) ~[flow-server-24.1.5.jar:24.1.5]
at com.vaadin.flow.server.VaadinServlet.init(VaadinServlet.java:132) ~[flow-server-24.1.5.jar:24.1.5]
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:944) ~[tomcat-embed-core-10.1.11.jar:10.1.11]
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:808) ~[tomcat-embed-core-10.1.11.jar:10.1.11]
at org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedContext.load(TomcatEmbeddedContext.java:84) ~[spring-boot-3.1.2.jar:3.1.2]
这表明
@Push(PushMode.AUTOMATIC,transport = Transport.WEBPUSH)
不行,我想让这和暗流一起工作
1条答案
按热度按时间gywdnpxw1#
Tomcat不在Vaadin中,而是在Sping Boot 中。您可以使用Sping Boot 参考手册中的说明将Tomcat替换为例如。不是说 spring-boot-starter-web 依赖不一定直接在你的pom.xml中,但是它是由Vaadin依赖传递进来的。我尝试将以下代码段添加到基本的Vaadin 24.1项目中,之后使用Undertow而不是Tomcat,服务器推送对我来说很好: