我需要使用vert.x,resteasy和weld-cdi的示例应用程序。我能够使用vert.x和resteasy。但我不知道如何整合weld-cdi。
请帮帮我。
答案 0 :(得分:0)
您可能想看看 weld-vertx project。
如果您已经可以使用vertx,这将允许您在Weld中编织。 该项目包含一些示例,您还可以检查测试以查看更多用途。
答案 1 :(得分:0)
我将Vertx与Resteasy和Weld一起使用。它不是那么简单,但我设法做到了。你需要:
org.jboss.resteasy:resteasy-cdi
和org.jboss.resteasy:resteasy-vertx
Resteasy集成模块org.jboss.weld.se:weld-se-core
模块org.jboss.weld.vertx:weld-vertx-core
您使用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
});
请注意,您仍需要调整:
如果您需要,我也可以为您提供代码。