我在esb中编写了一个代理服务来读取我存储在配置注册表中的文件,我的代理是:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="deleteme"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property xmlns:p="http://tempuri.org/" name="SourceID" expression="//p:SourceID" scope="default" type="STRING"/>
<property name="test"
expression="get-property('registry','conf:/test.xml')"
scope="default"
type="OM"/>
<property name="test.AddressEP" expression="$ctx:test//AddressEP"/>
<log level="custom">
<property name="test.AddressEP" expression="$ctx:test//AddressEP"/>
</log>
<header name="To" expression="get-property('test.AddressEP')"/>
<send/>
</inSequence>
</target>
<publishWSDL uri="http://pc241059:8281/services/echo?wsdl"/>
</proxy>
现在不是在属性中提供 AddressEP 的硬编码数据:
<property name="test.AddressEP" expression="$ctx:test//AddressEP"/>
我想传递属性的值:
<property xmlns:p="http://tempuri.org/" name="SourceID" expression="//p:SourceID"/>
像
<property name="test.AddressEP" expression="$ctx:test//get-property('SourceID')"/>
但我无法做到这一点?请帮我解决这个问题。期待您的回答。提前致谢
答案 0 :(得分:0)
我不认为这是正确的[1]当你使用路径导航时,你需要使用,使用树模型的函数,比如选择节点等。(虽然我不确定)
在您的情况下,您可以简单地使用XPATh字符串合并函数..
[1] <property name="test.AddressEP" expression="$ctx:test//get-property('SourceID')"/>
答案 1 :(得分:0)
我认为this可以解决您的问题。 它显示了如何从注册表中的xml文件中读取。