簡體   English   中英

如何使用WSO2 ESB來調解固定長度的文本數據

[英]How to use WSO2 ESB to mediate fixed length text data

我需要使用WSO2 ESB將通過MQ接收的傳入固定長度文本數據(每個消息一行文本)調解為XML格式,然后通過HTTP將轉換后的數據發送到SOAP端點。

我知道我可以使用WSO2 ESB管理控制台來配置InSequence以使用子字符串函數進行數據解析和映射,然后設置代理服務以包含此配置的序列。

我需要有關如何在步驟中詳細完成所有這些操作的幫助。 非常感謝有人可以提供一些示例或鏈接到一些關於操作方法的網頁。

謝謝!

你應該看看smooks,我認為這是最好的解決方案:

CSV: http://wso2.com/library/blog-post/2013/09/csv-to-xml-transformation-with-wso2-esb-smooks-mediator/http://wso2.com/library/blog-post/2013/09/csv-to-xml-transformation-with-wso2-esb-smooks-mediator/

修復了Lengh文本: http://vvratha.blogspot.fr/2014/05/processing-large-text-file-using-smooks.html ://vvratha.blogspot.fr/2014/05/processing-large-text-file-using-smooks.html

另一種解決方案是編寫自己的messageBuilder,搜索“ org.apache.axis2.format.PlainTextBuilder ”以查找源代碼......

我同意Jean-Michel的觀點,認為smooks是一個很好的解決方案。 但是,這也可以在單個簡單代理服務中完成。 為您的終端設置一個簡單的傳遞代理。 然后,在源視圖(或向導)中打開它並配置insequence以添加PayloadMediator。

以下是如何使用Payload Mediator的示例[1]以下是一些摘錄示例,其中包含一些xpath表達式,用於從輸入中提取固定長度字段:

    <payloadFactory media-type="xml">
        <format>
            <m:body xmlns:m="http://services.samples">
                <m:field1>$1</m:field1>
                <m:field2>$2</m:field2>
            </m:body>
        </format>
        <args>
            <arg expression="substring(//*,0,10)"/>
            <arg expression="substring(//*,10,10)"/>
        </args>
    </payloadFactory>

您可能還需要在序列中使用內容類型屬性,因為您要將內容類型更改為xml:

<property name="ContentType" value="text/xml" scope="axis2"/>

祝你好運!

[1] https://docs.wso2.com/pages/viewpage.action?pageId=33136018

對於那些對工作解決方案感興趣的人,這是我的smooks配置:

<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:fl="http://www.milyn.org/xsd/smooks/fixed-length-1.3.xsd">
<fl:reader fields="price[5]?trim,quantity[5]?trim,symbol[5]?trim.upper_case,comment[10]?trim" recordElementName="order">
    <fl:listBinding beanId="order" class="test.Order" />
</fl:reader>
</smooks-resource-list>

另外,需要將test.Order的jar文件添加到WSO2 ESB的類路徑中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM