Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何申报和使用;“全球财产”;在WSO2 ESB中?(消息处理器定义的序列之外的属性)_Wso2_Wso2esb_Esb - Fatal编程技术网

我如何申报和使用;“全球财产”;在WSO2 ESB中?(消息处理器定义的序列之外的属性)

我如何申报和使用;“全球财产”;在WSO2 ESB中?(消息处理器定义的序列之外的属性),wso2,wso2esb,esb,Wso2,Wso2esb,Esb,我对如何在WSO2 ESB中存储类似全局属性的内容有以下疑问。我试图解释我的处境 我有一个消息处理器,其中定义了一个每秒执行一次的序列,如下所示: <?xml version="1.0" encoding="UTF-8"?> <messageProcessor class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor" messageStore="

我对如何在WSO2 ESB中存储类似全局属性的内容有以下疑问。我试图解释我的处境

我有一个消息处理器,其中定义了一个每秒执行一次的序列,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<messageProcessor class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor" messageStore="glisMessageStore" name="glisMessageProcessor" targetEndpoint="glisEndpoint" xmlns="http://ws.apache.org/ns/synapse">
    <parameter name="client.retry.interval">100</parameter>
    <parameter name="max.delivery.attempts">4</parameter>
    <parameter name="member.count">1</parameter>
    <parameter name="message.processor.reply.sequence">glisResponseSequence</parameter>
    <parameter name="max.delivery.drop">Disabled</parameter>
    <parameter name="interval">10</parameter>
    <parameter name="is.active">true</parameter>
</messageProcessor>

100
4.
1.
反应顺序
残废
10
真的
在这个glisResponseSequence.xml中,我执行对外部web服务的调用。在这个序列中,我必须做一些有点“怪异”的事情

我必须做一些类似于以下序列模式化中解释的事情:

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="transferProcessorSequence" onError="transferFromErrorSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <log level="full"/>
    ..................................................................
    ..................................................................
    ..................................................................
    1) RETRIEVE THE VALUE FROM A "GLOBAL PROPERTY" NAMED sleepingTime
    2) IF sleepingTime != NULL PERFORM A JAVASCRIPT THAT USE THIS VALUE

    3) CALL EXTERNAL WEB SERVICE:
    <call>
        <endpoint key="transferFromGLISAPI"/>
    </call>

    4) SET THE NEW VALUE OF THE sleepingTime "GLOBAL PROPERTY" (it is retrieved from the response header)

    ..................................................................
    ..................................................................
    ..................................................................
</sequence>

..................................................................
..................................................................
..................................................................
1) 从名为sleepingTime的“全局属性”中检索值
2) 如果是睡觉时间!=NULL执行使用此值的JAVASCRIPT
3) 调用外部WEB服务:
4) 设置sleepingTime“全局属性”的新值(从响应标头检索)
..................................................................
..................................................................
..................................................................
因此,在我的序列中,我有一个调用中介。在此之后,调用中介我必须使用从响应头检索到的值设置类似于全局属性的内容(获取此值对我来说不是问题)。当消息处理器再次执行此序列时,此全局属性的值将在我的调用中介之前再次使用

我怎么做?我的疑问是:

1) 我在哪里定义这个全局属性?我想我必须在glisresponsesesequence.xml之外声明它(由消息处理器执行的序列)。我可以将它声明为另一个序列吗

2) 此全局属性的正确范围是什么


对我来说,存储调用中介对外部web服务执行http请求之后获得的值非常重要,并在下一次调用之前再次使用它(当消息处理器再次执行glisResponseSequence.xml序列时)。我能做吗?另一种解决方案是将此日期存储在数据库中,但如果可能的话,我更喜欢使用全局属性。

您可以在序列中使用此javascript:

    <script language="js"><![CDATA[
        var myValue = 12;

        // create or update the property
        mc.getEnvironment().getServerContextInformation().addProperty("GlobalProperty",myValue);

        // get the property                     
        var globalProperty = mc.getEnvironment().getServerContextInformation().getProperty("GlobalProperty");

        // provide it's value to your mediation with $ctx:GlobalProperty
        mc.setProperty("GlobalProperty",globalProperty);
    ]]></script>

您可以在序列中使用此javascript:

    <script language="js"><![CDATA[
        var myValue = 12;

        // create or update the property
        mc.getEnvironment().getServerContextInformation().addProperty("GlobalProperty",myValue);

        // get the property                     
        var globalProperty = mc.getEnvironment().getServerContextInformation().getProperty("GlobalProperty");

        // provide it's value to your mediation with $ctx:GlobalProperty
        mc.setProperty("GlobalProperty",globalProperty);
    ]]></script>

那么,我该把这个脚本放在哪里呢?我认为是脚本设置了全局变量,所以它在调用中介之后,是吗?要在调用中介程序之前检索此值,我必须做些什么?不要像这样使用此脚本,它包含3个用于设置/读取并授予全局属性访问权限的代码示例。在调用中介器之后的(4)中使用带有addProperty的行来设置值,在调用中介器之前的(1)中使用带有getProperty的行来读取值。那么,我应该把这个脚本放在哪里?我认为是脚本设置了全局变量,所以它在调用中介之后,是吗?要在调用中介程序之前检索此值,我必须做些什么?不要像这样使用此脚本,它包含3个用于设置/读取并授予全局属性访问权限的代码示例。在调用中介器之后的(4)中使用带有addProperty的行来设置值,在调用中介器之前的(1)中使用带有getProperty的行来读取值