有没有办法,我可以从esb服务更新本地条目。我必须在全局变量中存储一个令牌,并在它过期时需要更新它。我想把它保存在本地入口。看起来我无法从ESB服务/序列更新它。
<localEntry key="TestLocalEntry" xmlns="http://ws.apache.org/ns/synapse"><![CDATA[TestValue]]></localEntry>
答案 0 :(得分:0)
如果您要求存储全局变量而不是真正更新本地条目,则可以使用esb registry
尝试使用此js在Governance注册表中创建/更新条目(并在此示例中存储当前有效负载xml):
<script language="js"><![CDATA[
importPackage(Packages.org.apache.synapse.config);
mc.getConfiguration().getRegistry().newResource("gov:/trunk/test/MyEntry.xml",false);
mc.getConfiguration().getRegistry().updateResource("gov:/trunk/test/MyEntry.xml",mc.getPayloadXML().toString());
]]></script>
在中介中尝试使用此xpath表达式来读取条目:
get-property('gov:/trunk/test/MyEntry.xml')
答案 1 :(得分:0)
我已设法用java脚本修复此问题。
要获得物业价值:
<script language="js"><![CDATA[var Token = mc.getEnvironment().getServerContextInformation().getProperty("TokenVal");
mc.setProperty("TokenVal",Token);]]></script>
<property expression="$ctx:TokenVal" name="TokenValue"
type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
并更新值使用:
<script language="js"><![CDATA[var TokenValue = mc.getProperty("TokenValue");
mc.getEnvironment().getServerContextInformation().addProperty("TokenVal",TokenValue);
]]></script>
但即便如此,如果我们在wso2 esb中有任何内容,我想使用注册表资源