0
我在路由1中設置駱駝交換的屬性。我試圖在分離器內更新第二條路由。但在分離器的第二次迭代中,我獲得了我在路由1中設置的原始值,而不是新的更新值。下面是我努力的樣本..無法更新駝峯交換屬性
<route handleFault="true" streamCache="true" id="route1">
<from uri="cxfrs://bean://test?synchronous=true"/>
<bean ref="testBean" method="setMyProperty"/>// setting initial value for property
<to uri="direct:directCall"/>
</route>
<route handleFault="true" streamCache="true" id="route2">
<from uri="direct:directcall"/>
<log message="Inside Second call..."/>
<split>
<jsonpath>some Json path</jsonpath>
<bean ref="formatConvertor" method ="convertLHMToJSON(${body})"/>
<split>
<jsonpath>some json path</jsonpath>
<bean ref="PropertySetter" method ="setProperty"/> //I am setting new value in this method
</split>
</split>
豆內部:爲什麼不更新
public void setMyProperty(Exchange exchange) {
exchange.setProperty("testProp", "hello");
}
public void setProperty(Exchange exchange) {
sysout(exchange.getProperty("testProp").toString())//this always prints "hello"
String x=exchange.getProperty("testProp")+some other value;// in all iterations of split I am getting 'hello' as the value of the property instead of new value
exchange.setProperty("testProp", x);
sysout(exchange.getProperty("testProp").toString())// this line prints the new value
}
的財產?即使我嘗試設置標題。相同的結果。謝謝。
爲什麼使用bean設置交換屬性?除非顯示的邏輯更多,否則可以執行.setProperty(「propertyName」,「propertyValue」);然後,您可以在分割中使用相同的代碼來更新屬性。 –
其實,在設置屬性之前,我在bean中有很多轉換。再次在拆分我需要編寫業務邏輯之前我更新屬性。 – Jay
從粘貼的代碼處理這個代碼有點難,爲什麼它不起作用,我之前已經更新了split中的交換屬性,並且工作正常。我認爲如果你用一個簡單的例子進行測試會更好。將SplitIndex放入交換屬性中並記錄該值。看到你可以在每次拆分過程中看到該屬性。 –