通过servce

时间:2017-10-03 10:29:37

标签: wso2 wso2esb

有没有办法,我可以从esb服务更新本地条目。我必须在全局变量中存储一个令牌,并在它过期时需要更新它。我想把它保存在本地入口。看起来我无法从ESB服务/序列更新它。

<localEntry key="TestLocalEntry" xmlns="http://ws.apache.org/ns/synapse"><![CDATA[TestValue]]></localEntry>

2 个答案:

答案 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中有任何内容,我想使用注册表资源