Wso2 - 使用 get-属性 的调用序列
Wso2 - call sequence with get-property
场景是这样的:
- 三个序列:s1、s2、s3
- 存储在注册表 (localEntry) 中的一个变量设置为 1
- 使用 concat 获取 seqName
- 尝试使用 get-属性
调用序列
到目前为止我所做的:
1) 提取值
<property name="getSequence" expression="get-property('registry','conf:repository/myVersion2.xml')" scope="default" type="OM"/>
<log level="custom">
<property name="TestVersion::localEntry" expression="$ctx:getSequence//localEntry"/>
</log>
2) 连接
<property name="seqName"
expression="concat('s', $ctx:getSequence//localEntry)"
scope="default"
type="STRING"/>
3) 调用序列
<sequence key="get-property('seqName')"/>
4) 执行测试
5) 获取错误:
TID: [0] [ESB] [2015-07-08 10:27:36,325] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::info = setting property {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::localEntry = 1 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::Sequence = s1 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::info = filter1 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::info = LOG_S1_TRUE {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,329] ERROR {org.apache.synapse.mediators.base.SequenceMediator} - Sequence named Value {name ='null', keyValue ='get-property('seqName')'} cannot be found {org.apache.synapse.mediators.base.SequenceMediator}
所以问题似乎是存储在 'seqName' 中的信息如何被序列读取为序列名称而不是字符串。
我也尝试过
<sequence key="{get-property('seqName')}"/>
但这也行不通...
提前致谢。
克劳迪奥
已修复!
<sequence xmlns:local="ws.apache.org/ns/synapse" key="{get-property('seqName')}"/>
谢谢大家!
问候
克劳迪奥
场景是这样的: - 三个序列:s1、s2、s3 - 存储在注册表 (localEntry) 中的一个变量设置为 1 - 使用 concat 获取 seqName - 尝试使用 get-属性
调用序列到目前为止我所做的:
1) 提取值
<property name="getSequence" expression="get-property('registry','conf:repository/myVersion2.xml')" scope="default" type="OM"/>
<log level="custom">
<property name="TestVersion::localEntry" expression="$ctx:getSequence//localEntry"/>
</log>
2) 连接
<property name="seqName"
expression="concat('s', $ctx:getSequence//localEntry)"
scope="default"
type="STRING"/>
3) 调用序列
<sequence key="get-property('seqName')"/>
4) 执行测试
5) 获取错误:
TID: [0] [ESB] [2015-07-08 10:27:36,325] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::info = setting property {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::localEntry = 1 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::Sequence = s1 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::info = filter1 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,327] INFO {org.apache.synapse.mediators.builtin.LogMediator} - TestVersion::info = LOG_S1_TRUE {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2015-07-08 10:27:36,329] ERROR {org.apache.synapse.mediators.base.SequenceMediator} - Sequence named Value {name ='null', keyValue ='get-property('seqName')'} cannot be found {org.apache.synapse.mediators.base.SequenceMediator}
所以问题似乎是存储在 'seqName' 中的信息如何被序列读取为序列名称而不是字符串。
我也尝试过
<sequence key="{get-property('seqName')}"/>
但这也行不通...
提前致谢。
克劳迪奥
已修复!
<sequence xmlns:local="ws.apache.org/ns/synapse" key="{get-property('seqName')}"/>
谢谢大家!
问候 克劳迪奥