我有一个WSO2 ESB 4.8.1序列,它将消息发送到定义为
的HTTP端点<http method="get" uri-template="http://host.example.com/v1/entity/{uri.var.id}/attributes/foo">
该属性先前由XPath设置:
<property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.id" expression="//id" scope="default" type="STRING" />
有时它会调用正确的URL,有时它会在不替换变量的情况下调用http://host.example.com/v1/entity/{uri.var.id}/attributes/foo
。为什么呢?
答案 0 :(得分:0)
可能有其他可能的原因,但似乎是我的问题的原因是逃避。如果ID是纯字母数字字符串,则它可以工作,但如果它包含空格字符,则它不会被替换。记录错误消息并转到故障序列会更有帮助,但这是用WSO2提出的。
我通过修改repository/conf/synapse.properties
并取消注释synapse.xpath.dom.failover.enabled=true
,找到了我enable XPath 2.0的修正案;然后使用XPath 2.0的转义功能:
<property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.id" expression="encode-for-uri(//id)" scope="default" type="STRING"/>