2012-06-21 2 views
0

Nous utilisons plusieurs proxies qui écoutent des endroits différents. Mais pendant le développement, nous n'avons pas le même URI que dans l'environnement de production. Est-il possible de définir l'URI (transport.vfs.File.URI) externe? (Peut-être entrée locale ou d'une autre propriété?)WSO2 ESB: Utilisation de la définition de paramètre externe pour le proxy?

ligne suivante devrait être en mesure de charger définition externe de l'URI réelle:

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

complète Proxy Exemple (ne fonctionne pas):

<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> 

Répondre

0

Une méthode simple consiste à créer un modèle de séquence et à définir vos paramètres dans ce modèle. Vous avez lu ce modèle en tant que première action de votre inSequence. Votre définition proxy ressemble:

<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> 

Le difinition modèle semble sg. comme:

<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> 

De cette façon, le transport de votre définition de proxy vers un autre environnement implique l'utilisation d'un modèle différent. Naturellement, vous ne pouvez définir dans inSequence que les paramètres dont les valeurs peuvent être déterminées au début de l'inSequence. Par exemple, si vous souhaitez que le champ replyFilename contienne la réponse ID message, définissez-le dans outSequence.