2013-06-21 50 views
1

我正在嘗試創建一個WSO2 ESB代理,該代理將生成一個HTTP多部分響應,基本上有兩部分:XML和附加的二進制文件(例如圖像)。 順序是如下:使用WSO2創建多部分響應ESB

  • 服務公開爲HTTP GET請求
  • 我們首先調用返回一個二進制文件
  • 我們創建描述二進制文件的XML端點
  • 我們的2種元素混合在一起,並提供多部​​分響應 (XML +二進制文件)

幾次嘗試之後和環顧樣品和f orums我找不到如何解決這個特殊情況。 我已經設法調用端點。我可以在調試日誌中看到響應在soap內部消息中作爲二進制傳輸。 我懷疑我需要使用MultipartFormDataFormatter。就我所瞭解的格式化程序的代碼而言,它將內部soap消息主體的所有子節點逐個創建一個子節點。

所以我想我的XML內容追加爲二進制節點的兄弟節點(看起來有望在日誌中的消息),並強制將contentType有:

<property name="messageType" value="multipart/form-data" scope="axis2"/> 
<property name="ContentType" value="multipart/form-data" scope="axis2"/> 

就一定要調用正確的格式化程序。

不幸的是,這似乎並沒有工作,響應確實是在multipart/form-data,但零字節的數據。

任何幫助?

感謝 雅尼克

回答

0

您需要啓用二進制繼電器製造商在axis2.xml文件中使用的multipart/form-data的消息格式。

<messageBuilder contentType="multipart/form-data" 
        class="org.wso2.carbon.relay.BinaryRelayBuilder"/> 


    <messageFormatter contentType="multipart/form-data" 
        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/> 
0

感謝您的回答。

我已經通過啓用Binary Relay構建器進行了多項測試,但是我沒有得到我期待的確切的多部分響應。

所以,我終於創建了我自己的格式化程序。它構造了身體兒童的多部分響應,並尋找一些特定的屬性來指定頭部信息,如零件內容ID,傳輸編碼和內容類型。

0

也許這將是別人有用:

您可以設置取消註釋在/repository/conf/axis2/axis2.xml文件

<messageBuilder contentType="multipart/related" class="org.wso2.carbon.relay.BinaryRelayBuilder"/> 

以下屬性按到多我們的建設者這裏理解的要求是使用從不同端點接收的xml內容和png附件製作單個響應消息。

爲了實現您的目標,我們可以使用自定義介體。通過使用自定義類中介,您可以使用xml元數據和png圖像構建響應。

編寫一個java類來構建帶有兩個響應的消息可能是以WSO2方式實現此目的的最佳方法。您可以使用消息生成器和消息箱消息方法以您想要的方式創建消息。您可以使用類調解器,它可以在this documentation中找到,與ESB一起使用。

作爲進一步的說明,請注意enrich mediator附加了給定的資源。