Vaadin 24 WEB Push用Undertow替换Tomcat

eit6fx6z  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(67)

我想在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)

不行,我想让这和暗流一起工作

gywdnpxw

gywdnpxw1#

Tomcat不在Vaadin中,而是在Sping Boot 中。您可以使用Sping Boot 参考手册中的说明将Tomcat替换为例如。不是说 spring-boot-starter-web 依赖不一定直接在你的pom.xml中,但是它是由Vaadin依赖传递进来的。我尝试将以下代码段添加到基本的Vaadin 24.1项目中,之后使用Undertow而不是Tomcat,服务器推送对我来说很好:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <!-- Exclude the Tomcat dependency -->
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-undertow</artifactId>
    </dependency>

相关问题