【问题标题】:Vertx with resteasy and weld带有resteasy和weld的Vertx
【发布时间】:2018-03-07 09:05:58
【问题描述】:

我需要一个使用 vert.x、resteasy 和weld-cdi 的示例应用程序。我可以使用 vert.x 和 resteasy。但我不知道如何集成weld-cdi。

请帮帮我。

【问题讨论】:

    标签: resteasy vert.x weld


    【解决方案1】:

    我将 Vertx 与 Resteasy 和 Weld 一起使用。这不是那么简单,但我已经设法做到了。您将需要:

    • org.jboss.resteasy:resteasy-cdiorg.jboss.resteasy:resteasy-vertx Resteasy 集成模块
    • Java SE 上 Weld 的 org.jboss.weld.se:weld-se-core 模块
    • org.jboss.weld.vertx:weld-vertx-core 用于 Weld + Vertx 集成

    您使用 Weld+Vertx 扩展设置 CDI:

    Weld weld = new Weld();
    weld.addExtension(new VertxExtension());
    weld.initialize();
    

    当您部署 Resteasy 时,您希望使用 CDI 实例进行部署:

    VertxResteasyDeployment deployment = new VertxResteasyDeployment();
    ResteasyCdiExtension cdiExtension = CDI.current().select(ResteasyCdiExtension.class).get();
    deployment.setActualResourceClasses(cdiExtension.getResources());
    deployment.setInjectorFactoryClass(CdiInjectorFactory.class.getName());
    deployment.getActualProviderClasses().addAll(cdiExtension.getProviders());
    deployment.start();
    

    您想通过在阻塞块中注册消费者来设置 Vertx-Weld 扩展:

    // Setup the Vertx-CDI integration
    VertxExtension vertxExtension = CDI.current().select(VertxExtension.class).get();
    BeanManager beanManager = CDI.current().getBeanManager();
    // has to be done in a blocking thread
    vertx.executeBlocking(future -> {
        vertxExtension.registerConsumers(vertx.getDelegate(), BeanManagerProxy.unwrap(beanManager).event());
        future.complete();
    }, res -> {
        // you can now create your HTTP server
    });
    

    请注意,您仍然需要调整:

    • 为 Vert.x 请求创建 CDI 请求上下文
    • 在 Vert.x 异步处理程序上传播 CDI 和 Resteasy 线程本地
    • 使用 CDI 和 Resteasy 设置 Bean 验证

    如果你需要,我也可以给你代码。

    【讨论】:

      【解决方案2】:

      您可能想看看 weld-vertx project

      如果您已经可以使用 vertx,这将允许您在 Weld 中进行编织。 该项目包含一些示例,您还可以检查测试以了解更多用途。

      【讨论】:

        猜你喜欢
        • 2014-10-31
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多