2012-06-21 33 views
0

我們正在使用幾個正在偵聽不同位置的代理。但在開發過程中,我們沒有與生產環境中的URI相同的URI。是否可以讓URI(transport.vfs.File.URI)在外部定義? (也許本地入境或其他財產?)WSO2 ESB:使用外部參數定義代理?

行之後應該能夠加載實際URI的外部定義:

<parameter name="transport.vfs.FileURI">get-property('myURI')</parameter> 

的全面代理實例(不工作):

<proxy xmlns="http://ws.apache.org/ns/synapse" name="getRN100xml" 
statistics="disable" trace="disable" transports="vfs"> 
<target> 
    <inSequence> 
    <send>...</send> 
    </inSequence> 
</target> 
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter> 
<parameter name="transport.PollInterval">5</parameter> 
<parameter name="transport.vfs.MoveAfterProcess">C:/WSO2/In/saved</parameter> 
<parameter name="transport.vfs.FileURI">get-property('myURI')</parameter> 
<parameter name="transport.vfs.FileNamePattern">.*.xml</parameter> 
<parameter name="transport.vfs.ContentType">application/xml</parameter> 
<parameter name="transport.vfs.MoveTimestampFormat">yyMMddHHmmss</parameter> 

回答

0

一個簡單的方法是製作一個序列模板並在該模板中設置參數。您將此模板作爲inSequence中的第一個動作來閱讀。 你代理的定義是這樣的:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="getRN100xml" 
statistics="disable" trace="disable" transports="vfs"> 
<target> 
<inSequence> 
    <call-template target="transport_vfs_parameter_settings"/> 
<send>...</send> 
/<inSequence> 
</target> 

模板difinition看起來SG。如:

<template xmlns="http://ws.apache.org/ns/synapse" name="transport_vfs_parameter_settings"> 
    <sequence> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileNamePattern" expression="test.xml"></property> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.PollInterval" expression="15" scope="transport"></property> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterProcess" expression="MOVE" scope="transport"></property> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileURI" expression="//localhost/D:/Test/in" scope="transport"></property> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterProcess" expression="//localhost/D:/Test/processed" scope="transport"></property> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterFailure" expression="//localhost/D:/Test/failure" scope="transport"></property> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ContentType" expression="text/xml" scope="transport"></property> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterFailure" expression="MOVE" scope="transport"></property> 
    </sequence> 
</template> 

通過這種方式將代理定義傳輸到另一個環境意味着使用不同的模板。 當然,你只能在inSequence中設置那些參數,它們的值可以在inSequence開頭確定。例如,如果您希望replyFilename包含回覆messageID,請將其設置爲outSequence。