2 回答

TA貢獻1848條經驗 獲得超10個贊
當您開發 custom 時transformer
,您需要記住,返回 aMessage<?>
會讓您完全控制其內容。
當轉換器函數返回 a 時Message
,它不會填充任何請求標頭。
因此,您public Message transform(String message) {
必須期望 aMessage
作為輸入,并且需要將請求消息中的所有標頭復制到回復消息。上有相應的方法MessageBuilder
。
另一方面,完全不清楚為什么需要Message
在此處返回 a ,因為 Spring Integration 中的所有內容都將Message
在發送到輸出通道之前被包裝。

TA貢獻1777條經驗 獲得超3個贊
采?。?/p>
ClassCastException 后來在最后一個路由器中發生,是因為我命名了自定義 header contentType
。這是內部使用的默認 jms 標頭。當我將其值更改為 時text/xml
,最后一個路由器String route(Message<MyModel> myModel)
嘗試將 json 轉換為 MyModel,但它失敗了,因為標頭不再像application/json
應有的那樣,而是text/xml
。這導致了 ClassCastException。
所以我擺脫了自定義 xml 解組邏輯 bean。我重命名了自定義標題。并用過<ixml:unmarshalling-transformer ../>
。
它使用 xml 配置工作,無需額外的自定義 java bean。
添加回答
舉報