2012-06-21 6 views
0

다른 위치를 청취하고있는 여러 프록시를 사용하고 있습니다. 그러나 개발 중에는 프로덕션 환경과 동일한 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> 

템플릿 해상력이 SG 보이는 : 프록시 정의는 것 같습니다. like :

<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에이를 설정하십시오.