2016-03-18 53 views
1

我有啓動類中的啓動路由並創建一個新的CamelContextBean類,因爲這是一個CDI注入bean,它將容納一個引用到一個CamelContext實例。類型CamelContextBean與限定符的不滿意的依賴關係@Default當在jar中啓動駱駝路由並在同一個jar中注入camelContextbean

  • 的Java 1.8
  • Apache的駱駝2.16.2
  • wildfly 9.0.2
  • EJB 3

CamelContextBean:

public class CamelContextBean { 

    private CamelContext camelContext; 

    public CamelContext getCamelContext() { 
     return camelContext; 
    } 

    public void setCamelContext(CamelContext camelContext) { 
     this.camelContext = camelContext; 
    } 
} 

啓動類:

@Singleton 
@Startup 
public class BootStrap { 
     private static CamelContext camelContext; 
     private CamelContextBean camelContextBean = new CamelContextBean(); 

    @PostConstruct 
    public void init() throws Exception { 
     camelContext = new DefaultCamelContext(); 

     try { 
      camelContext.addRoutes(new MyRoute1());  
      camelContext.addRoutes(new MyRoute2()); 

      camelContext.start(); 
      camelContextBean.setCamelContext(camelContext); 
     } catch (Exception e) { 
       e.printStackTrace(); 
     } 

    @Produces 
    public CamelContextBean getCamelContextService() { 
     return camelContextService; 
    } 

我想通過注入它在同一個jar中使用camelContextBean。

@Stateless 
public class TestService {  
    @Inject 
    CamelContextBean camelContextService; 

    public void connectRoute(){ 
     CamelContext camelContext = camelContextService.getCamelContext(); 
     ... 
     ... 
    } 

我在maven倉庫中安裝了這個jar。嘗試在戰爭項目中用作依賴項,並將此TestService用作ejb服務。

@EJB 
TestService testService 

當建立戰爭項目,所有的路線開始。但無法完成構建,它給出無法啓動TestService,因爲標題中的錯誤。我可以解決這個問題嗎?

回答

1

您可以使用上述配置來實現此功能。但是,您可能需要實施駱駝CDI wildfly 9.0.2 pach。我給了How to use same CamelContext in multiple jar on the same war 細節級別asnwer這可能會幫助你。

+0

這對我真的很有用。謝謝你kds。 – coolD

+0

@kds,我得到了與wildfly 10.1.0相同的問題。這個補丁與這個補丁不兼容,並且在那裏沒有用4.8.0補丁解決。那麼,如何用10.1.0 Final做到這一點。 – namalfernandolk

相關問題