zoukankan      html  css  js  c++  java
  • WSO2 ESB XML定义语法(3)

    6.Property Mediator

      通过Synapse调解的每条消息都可以具有一组关联的属性。Synapse引擎和底层传输在处理的每条消息上设置了许多属性,用户可以操纵这些属性来修改消息流的运行时行为。此外,用户可以在消息上设置他自己的属性,这在管理消息流状态和存储特定于场景的变量时非常有用。例如,在某些情况下,用户可能希望在处理响应时访问请求有效负载中的特定值。

    属性中介用于操纵消息的属性。此介体可用于设置和删除属性值。在设置属性值时,输入可以是由XPath表达式生成的常量或变量值。配置属性Mediator的语法如下。

    <property name="string" [action=set|remove] [type="string"] (value="literal" | expression="xpath") 
    [scope
    =default|transport|axis2|axis2-client] [pattern="regex" [group="integer"]]>
    <xml-element/>?
    </property>

    'name'属性指定需要设置或删除的属性的名称,而'action'属性指定需要由Mediator执行的确切操作。如果未指定,则操作将默认为“设置”。

    设置属性值时,必须指定“value”或“expression”属性。'value'属性可用于将常量设置为属性值,而'expression'属性可用于指定XPath表达式(http://synapse.apache.org/userguide/xpath.html)如果指定了XPath表达式,Synapse将对消息进行评估,以确定需要分配给属性的值。

    Synapse属性是作用域。因此,在使用此Mediator时,用户应指定将设置或删除属性的范围。如果未指定,则属性介体将在“默认”范围内工作。只要事务(请求 - 响应)存在,此范围中设置的属性就会持续。在范围'axis2'上设置的属性具有较短的寿命,它主要用于将参数传递给基础Axis2引擎。“传输”范围中设置的属性将被视为传输标头。例如,如果需要使用传出请求发送名为“CustomHeader”的HTTP标头,

    <property name="CustomHeader" value="some value" scope="transport" type="type name"/>

    这将强制Synapse发送名为“CustomHeader”的传输标头以及传出消息。Property mediator还支持名为'axis2-client'的作用域。在此范围中设置的属性将被视为Axis2客户端选项。

    使用属性存储用户或方案特定信息时,建议始终使用“默认”范围。其他范围不应用于自定义开发或中介工作,因为它们有可能改变基础Axis2引擎和传输框架的行为。

    默认情况下,属性介体将所有属性值设置为字符串。可以通过指定“type”属性来设置其他类型的属性。此属性可以接受以下值之一。

    • STRING
    • BOOLEAN
    • DOUBLE
    • FLOAT
    • INTEGER
    • LONG
    • SHORT
    • OM

    类型名称区分大小写。类型“OM”可用于在消息上下文中设置XML属性值。当在调解期间与属性介体关联的表达式求值为XML节点时,这将非常有用。将type属性设置为'OM'后,生成的XML将在将其分配给属性之前转换为AXIOM OMElement。

    也可以使用属性mediator将一些静态XML内容设置为属性值。为此,请将静态XML内容指定为“property”元素的子节点,而不是使用“value”属性。

  • 相关阅读:
    ASP.Net Core -- 模型验证
    C# -- nameof什么意思?
    C# -- value是什么意思?
    C# -- 异常(二)
    C# -- 异常(一)
    C# -- 委托(二)
    C# -- 委托(一)
    ASP.Net Core -- Controller返回View
    ASP.Net Core -- 中间件
    ASP.Net Core -- 服务注册和管道
  • 原文地址:https://www.cnblogs.com/leolzi/p/10969160.html
Copyright © 2011-2022 走看看