我研究使用的樣例是使用Mule ESB提供的Data Weaver(簡稱DW),將一個json報文轉換爲xml響應,我使用的Anypoint Studio版本是6.0, Studio中運行項目的Mule Standalone版本是3.8.0.M1 EEweb
1.建立Mule ESB項目json
打開Anypoint Studio, 選擇[New]-[Mule Project],新建一個Mule Projectapp
這裏咱們新建一個Mule Maven Project,讓Anypoint Studio幫咱們生成maven項目所需的pom.xml文件,在生成web application文件的war包時須要修改這個pom文件。maven
具體anypoint studio使用的jdk設置以及maven repository的設定請參考Mule相關文檔,再也不贅述。orm
2)Mule Project生成之後,打開src/main/app目錄下的流程文件([項目名].xml文件),從Mule Palette中拖拽一個Http Listener到流程圖中,做爲ESB項目的Http請求入口。xml
打開HTTP節點,設置Http請求的參數文檔
點擊Connector Configuration旁邊的[+]按鈕,新建一個Http Connector,設置Connector的端口爲8081,根目錄爲/it
設置Connector屬性後,點擊[OK],關閉Connector窗口,設置Path路徑爲Test,Allowed Methods爲POST.io
3)拖拽一個DW控件(Transform Message控件)到Http控件以後,用於從json報文到xml報文響應的轉換。form
4)打開Transform Message控件,設置轉換的源數據格式和目標數據格式。
點擊左側的[Define metadata],設置源數據格式爲json格式,這裏能夠使用json schema文件定義源數據格式(Type選擇Schema,文件選擇json schema文件),也能夠使用實際json樣例文件定義(Type選擇Example,文件選擇實際json文件)。我這裏採用的是後者。
一樣的方式,點擊右側的[Define metadata],定義輸出xml文件的格式,能夠使用xml schema文件,也能夠使用xml樣例文件定義,這一點和上面提到的json文件相同。
定義好的dw樣式圖以下:
5)定義源數據和目標數據字段之間的映射關係。
咱們選中左側源數據端Payload:Json下的name節點,用鼠標拖拽到右側目標數據段的Xml<Student>節點下的name節點,鬆開鼠標,在這兩個屬性節點之間創建一一映射關係
(實際項目中節點之間映射關係比這種一一映射關係複雜的多,能夠參考Data Weaver相關文檔),再在左側id屬性和右側id屬性之間創建一一映射關係。
映射關係創建完成後的dw圖以下所示:
至此一個ESB http項目就創建完成。