在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数据库)中,并从第二个代理访问它
<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中,因为它不是全局的,因为它可以跨不同的代理服务使用。在这一部分中,关于类中介的文档通常不是很好。谢谢