如何从注册表资源中读取本地条目的内容
How read content of local entry from registry resource
我是用local entry来注册参数,而不是在artifacts中保留fixed,不知道是不是更好的解决方法。
当我在 ESB Config 中创建本地条目时一切正常,但是当我在项目注册表资源中创建时我无法正确读取。
我正在使用下面的代码读取本地条目并写入 属性:
<Property description = "SetPPSUserName" expression = "get-property ('registry', 'conf: /local-entries/PPS_Username.xml')" name = "SetPPSUserName" scope = "default" type = "STRING" />
问题是它加载了本地条目的整个 xml 内容,而不仅仅是内容,例如 属性:
SetPPSUserName = "<localEntry key="PPS_Username" xmlns="http://ws.apache.org/ns/synapse"><![CDATA [content test blablab]]></ localEntry>"
正确的是:
SetPPSUserName = "content test blablab"
注意:当我将CAR上传到站点时,项目注册表资源的本地条目不会出现在管理控制台的本地条目列表中。
使用 google 翻译器
将消息从葡萄牙语翻译成英语
不确定我是否正确。
如果您想在代理中访问注册表资源,您必须执行以下步骤。
1.) 创建 "Registry Resource Project"
2.) 添加一个 "Registry Resource" 到该项目。因为我过去直接在 dev studio 中创建资源时遇到了一些问题,所以我总是在本地磁盘上创建一个包含内容的 test/XML 文件,然后 select "Import from file system" 创建资源
3.) 为 "Registry Resource Project" 创建一个 CAR
4.) 从 CAR 项目中打开 pom.xml 并将 "Server role" 更改为 "EnterpriseServiceBus" 否则它不会部署到 ESB。
5.) 导出CAR并部署到服务器
然后你就可以像这样在代理内部访问它了。
<property name="registryValue" expression="get-property('registry','gov:/path/property1.txt')"/>
希望对您有所帮助。
试试这个:
在 属性 中设置类型 = OM 而不是 STRING。
<Property description = "SetPPSUserName" expression = "get-property ('registry', 'conf: /local-entries/PPS_Username.xml')" name = "SetPPSUserName" scope = "default" type = "OM" />
<log level="custom">
<property name="call_testProp" expression="$ctx:SetPPSUserName" type="STRING"/>
</log>
更新 1:
注册表中我的 localEntry:
<localEntry key="PPS_Usernamelocal" xmlns="http://ws.apache.org/ns/synapse">
<a>
<b>TEST</b>
</a>
</localEntry>
我的 属性 和 esb 代理内的日志调解器:
<property name="PPS_Username"
expression="get-property('registry','conf:/localentries/PPS_Username.xml')"
scope="default"
type="OM"/>
<log level="custom">
<property name="PPS_UsernameB" expression="$ctx:PPS_Username//syn:a/syn:b" xmlns:syn="http://ws.apache.org/ns/synapse"/>
</log>
我的 ESB 回复:
[2017-02-22 16:21:42,680] INFO - LogMediator PPS_UsernameB = TEST
我是用local entry来注册参数,而不是在artifacts中保留fixed,不知道是不是更好的解决方法。
当我在 ESB Config 中创建本地条目时一切正常,但是当我在项目注册表资源中创建时我无法正确读取。
我正在使用下面的代码读取本地条目并写入 属性:
<Property description = "SetPPSUserName" expression = "get-property ('registry', 'conf: /local-entries/PPS_Username.xml')" name = "SetPPSUserName" scope = "default" type = "STRING" />
问题是它加载了本地条目的整个 xml 内容,而不仅仅是内容,例如 属性:
SetPPSUserName = "<localEntry key="PPS_Username" xmlns="http://ws.apache.org/ns/synapse"><![CDATA [content test blablab]]></ localEntry>"
正确的是:
SetPPSUserName = "content test blablab"
注意:当我将CAR上传到站点时,项目注册表资源的本地条目不会出现在管理控制台的本地条目列表中。
使用 google 翻译器
将消息从葡萄牙语翻译成英语不确定我是否正确。
如果您想在代理中访问注册表资源,您必须执行以下步骤。
1.) 创建 "Registry Resource Project" 2.) 添加一个 "Registry Resource" 到该项目。因为我过去直接在 dev studio 中创建资源时遇到了一些问题,所以我总是在本地磁盘上创建一个包含内容的 test/XML 文件,然后 select "Import from file system" 创建资源 3.) 为 "Registry Resource Project" 创建一个 CAR 4.) 从 CAR 项目中打开 pom.xml 并将 "Server role" 更改为 "EnterpriseServiceBus" 否则它不会部署到 ESB。 5.) 导出CAR并部署到服务器
然后你就可以像这样在代理内部访问它了。
<property name="registryValue" expression="get-property('registry','gov:/path/property1.txt')"/>
希望对您有所帮助。
试试这个:
在 属性 中设置类型 = OM 而不是 STRING。
<Property description = "SetPPSUserName" expression = "get-property ('registry', 'conf: /local-entries/PPS_Username.xml')" name = "SetPPSUserName" scope = "default" type = "OM" />
<log level="custom">
<property name="call_testProp" expression="$ctx:SetPPSUserName" type="STRING"/>
</log>
更新 1:
注册表中我的 localEntry:
<localEntry key="PPS_Usernamelocal" xmlns="http://ws.apache.org/ns/synapse">
<a>
<b>TEST</b>
</a>
</localEntry>
我的 属性 和 esb 代理内的日志调解器:
<property name="PPS_Username"
expression="get-property('registry','conf:/localentries/PPS_Username.xml')"
scope="default"
type="OM"/>
<log level="custom">
<property name="PPS_UsernameB" expression="$ctx:PPS_Username//syn:a/syn:b" xmlns:syn="http://ws.apache.org/ns/synapse"/>
</log>
我的 ESB 回复:
[2017-02-22 16:21:42,680] INFO - LogMediator PPS_UsernameB = TEST