2016-06-07 14 views
0

Camel的bean組件將方法名稱視爲字符串,在運行時使用該字符串來調用該方法。Apache Camel:Risk with Bean組件無法在編譯時鏈接Bean方法

from("direct:start") 
.bean(contactDao, "getContactById") 

但是,當Java相比,其鏈接在編譯時間本身,因此在編譯時本身被檢測到任何錯誤的方法,這是不好的。

在駱駝中,只有在運行時觸發該流時纔會捕獲bean方法調用的任何錯誤。

是否有任何安全措施來避免這種情況?

回答

1

使用org.apache.camel.Processor而不是bean,或者從編寫Java代碼的Processor中調用bean,並且可以直接調用該方法(而不是字符串名稱)。

+0

謝謝克勞斯。這消除了我的顧慮。但是,通過這個解決方案,我們每次需要調用一個bean時都需要一個新的處理器對象。另外,在bean方法參數上使用@Header註解的自動頭映射將不起作用。我們必須以編程方式從交換中提取標題並傳遞給bean方法並將響應設置回交換中。我想除此之外沒有其他解決方案? – ndsurendra