2017-09-26 70 views

回答

0

你可能想看看weld-vertx project

如果您已經可以使用vertx,這將允許您編織Weld。 該項目包含一些示例,您還可以檢查測試以查看更多用途。

0

我使用Vertx與Resteasy和Weld。這不是那麼簡單,但我已經設法做到了。你將需要:

  • org.jboss.resteasy:resteasy-cdiorg.jboss.resteasy:resteasy-vertx RestEasy的集成模塊
  • org.jboss.weld.se:weld-se-core模塊焊接在Java SE
  • org.jboss.weld.vertx:weld-vertx-core用於焊接+ Vertx整合

您設置了CDI與Weld + Vertx擴展:

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焊擴展:

// 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請求上下文請求
  • 傳播CDI和RestEasy的線程-LO在Vert.x異步處理CALS
  • 設置Bean驗證與CDI和RestEasy的

我可以給你的代碼是太多,如果你需要的人。