当前位置: 首页 > 知识库问答 >
问题:

Quarkus+Atmosphere失败的原因是“无法在那个阶段配置jsr356”。

程彭祖
2023-03-14

我无法将大气库(2.4.30.SLF4JVAADIN1)与Quarkus 1.10.5.Final一起使用。

我已经将quarkus-undertow-websockets工件添加到我的Vaadin Quarkus项目中,但是jsr356支持无法初始化为:

Caused by: java.lang.IllegalStateException: Unable to configure jsr356 at that stage. ServerContainer is null
    at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:53)
    at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:42)

快速调查显示,在Atmosphere的JSR356AsyncSupport:47中,ServerContainer不在上下文中(ServerContainer容器=(ServerContainer)CTX.getAttribute(ServerContainer.class.getName());返回null)。

请问有什么方法可以在Quarkus的嵌入式底层servlet容器上启用websockets吗?我已经将QuarkusVaadinServlet上的异步支持启用为true(servletProducer.produce(servletBuilditem.builder(QuarkusVaadinServlet.class.getName(),QuarkusVaadinServlet.class.getName().addMapping(“/*”).setAsyncSupported(true).build());),但没有用。

谢谢你。

共有1个答案

夏景胜
2023-03-14

问题是undertowWebSocketProcessor.java不会创建WebSocketDeploymentInfo,这又导致io.undertow.websockets.jsr.bootstrap.handleDeployment()不初始化websockets,除非应用程序中至少有一个websocketendpoint或websocket配置。

解决办法是引入一个虚拟配置类:

public class EnableWebsockets implements ServerApplicationConfig {
    @Override
    public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> endpointClasses) {
        return new HashSet<>();
    }

    @Override
    public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {
        return new HashSet<>();
    }
}

有关更多细节,请参见https://github.com/mvysny/vaadin-quarkus/issues/12。

 类似资料:
  • 我正在处理一些奇怪的错误信息,我认为这可以归结为内存问题,但我很难确定它,可以从专家那里得到一些指导。 我有一个两台机器的Spark(1.0.1)集群。两台机器都有8个核心;一台有16GB内存,另一台有32GB内存(这是主)。我的应用程序涉及计算图像中的成对像素亲和力,尽管我测试的图像到目前为止只有1920x1200大,16x16小。 我确实必须改变一些内存和并行性设置,否则我会得到显式的OutO

  • 我试图在Jboss fsw中部署jar文件,但是部署失败,出现以下消息 POST_MODULE:org.jboss.msc.service.startService在服务jboss.deployment.unit中出现异常。“report.jar”。POST_MODULE:JBAS018733:在org.jboss.as.server.deployment.deploymentunitphases

  • 本文向大家介绍maven环境变量配置以及失败原因解析,包括了maven环境变量配置以及失败原因解析的使用技巧和注意事项,需要的朋友参考一下  本文为大家分享了maven环境变量配置的具体方法,供大家参考,具体内容如下 一、maven环境配置 1.解压apache-maven-x.x.x-bin.zip,最好不要解压到C盘 2.配置环境变量,右击“我的电脑”——“属性”——“高级系统设置”——“环境

  • 我有一个Gradle任务,简单地将文件从一个文件夹复制到另一个文件夹。 当在配置阶段调用copy'from''into'方法时,它可以工作,但当在执行阶段调用它们时,它就不工作了。 这样做是有效的 gradle copyServerConfig 如果我把它放在doFirst{}块中,也会发生同样的事情。 我不明白的另一件事是: gradle task1 但如果我改成这样: gradle task1

  • 我目前正在学习Gradle。 但是我发现,当我在命令行运行时,复制不会发生。只有当显式执行任务时(即通过在命令行运行)才会发生复制。所以上面的代码实际上行为与 我对配置阶段和配置闭包的理解是否不正确?还是我漏掉了一些信息?