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。
添加回答
舉報
