【发布时间】:2015-09-26 01:14:47
【问题描述】:
这是场景: - 三个序列:s1、s2、s3 - 存储在注册表中的一个变量 (localEntry) 设置为 1 - 使用 concat 获取 seqName - 尝试使用 get-property 调用序列
到目前为止我做了什么:
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')}"/>
但这也行不通……
提前谢谢你。
克劳迪奥
【问题讨论】:
-
你的结构有什么错误吗?在运行代码之前检查控制台。看看有没有错误发生。
-
你是指 web esb 控制台吗?我应该检查什么?
-
我的意思是,无论您在哪里编写了该代码。你用的是什么程序?
-
eclipse 如果我从设计切换到源代码,我没有收到任何错误
标签: properties wso2 sequence esb mediator