在wso2 6.1中从另一个代理中的代理恢复属性值

在wso2 6.1中从另一个代理中的代理恢复属性值,wso2,wso2esb,wso2carbon,Wso2,Wso2esb,Wso2carbon,我必须在代理中创建一个属性,并且它可以正常工作,但是我必须在同一项目中的另一个代理中使用这个值 我试着用这个: <property expression="$ctx:property-name" name="property-name"/> 但是没有起作用。有人知道是否有可能得到这个值?如果可能的话,该怎么办?也许这其中的一个解决方法会对您有所帮助 如果可能,将值作为参数(例如设置http头、soap属性)从一个代理传递到另一个代理 将您的值存储在数据库(例如内部H2数据库)

我必须在代理中创建一个属性,并且它可以正常工作,但是我必须在同一项目中的另一个代理中使用这个值

我试着用这个:

<property expression="$ctx:property-name" name="property-name"/>


但是没有起作用。有人知道是否有可能得到这个值?如果可能的话,该怎么办?

也许这其中的一个解决方法会对您有所帮助

  • 如果可能,将值作为参数(例如设置http头、soap属性)从一个代理传递到另一个代理

  • 将您的值存储在数据库(例如内部H2数据库)中,并从第二个代理访问它


一种方法是使用WSO2 ESB中提供的类中介选项

需要从其他代理或服务引用的属性可以传递到此自定义中介

<class name="samples.mediators.SimpleClassMediator">
    <property name="variable1" value="10"/>
    <property name="variable2" value="5"/>
</class>

当我们通过实现
mediator
AbstractMediator
接口来实现这个自定义类中介器时,通过
mediate(MessageContext synCtx)
方法,我们可以访问Synapse消息上下文(该对象中的属性将对同一服务中的所有中介器可用)

使用
MessageContext
对象,您可以访问其他全局上下文对象,如
SynapseConfiguration
SynapseEnvironment

因此,在中间方法中,您可以访问
SynapseConfiguration
对象,并在其上使用
setProperty(String key,String value)
方法,并传递需要其他服务或API访问的属性。通过编写类似的类中介,调用SynapseConfiguration对象上的
getProperty()
,访问此属性

参考资料:


创建一个设置属性值的共享序列,并从两个代理调用它。我已经尝试了这个解决方案。。。但不起作用,当尝试恢复另一个代理上的属性时,会收到空值。无法从另一个代理获取属性。然后,您可以将其设置为相同的值。该值可以是常量,也可以是从注册表中读取的值。很抱歉,请将问题发布到旧答案。类中介不是每次消息到达中介时都被实例化为新对象吗。如果是这样的话,它如何保持从一个代理服务到另一个代理服务的状态呢?Hi@PetteriPertola类中介将实例化该类的单个实例。如果需要请求级同步,则必须处理相同的同步。此外,还应根据用例使用此方法。另外,我的想法是将属性保存在全局上下文对象(如SynapseConfiguration)中,而不是保存在自定义类中介器实现中。对于我的用例,我无法将其保存在SynapseConfig中,因为它不是全局的,因为它可以跨不同的代理服务使用。在这一部分中,关于类中介的文档通常不是很好。谢谢