REST 代理以 属性 值响应
REST proxy to respond with property value
我有一个 属性 和 XML 字符串值。是否可以将 属性 值作为响应主体发送回客户端?如果是,有什么提示吗?
尝试使用 payloadfactory 调解器,但它似乎不适用于 XML 字符串。正如我所见,它适用于纯文本字符串,但无论如何都需要一些包装 XML 元素。
UPD
我的同事甚至在接受答案之前提供的替代解决方案是将 OM 属性 与 enrich mediator 一起使用。
类似的东西:
<property name="messageType" scope="axis2" type="STRING" value="application/xml"/>
<property expression="get-property('myProperty')" name="omProperty" scope="default" type="OM"/>
<enrich description="">
<source clone="true" property="omProperty" type="property"/>
<target type="body"/>
</enrich>
<respond/>
使用 OM 类型定义您的 属性。
类型 'OM' 可用于在消息上下文中设置 XML 属性 值。当与 属性 中介关联的表达式在中介期间计算为 XML 节点时,这会变得很有用。将 type 属性设置为 'OM' 后,生成的 XML 将在分配给 属性.
之前转换为 AXIOM OMElement
例如:
我的xml:
<config>
<crm>
<crmUsernamePassword>username:password</crmUsernamePassword>
</crm>
</config>
我的属性:
<property name="config" expression="get-property('conf:/config.xml')" scope="default" type="OM"/>
<property name="crmUsernamePassword" expression="$ctx:config//crm/crmUsernamePassword" scope="default"
type="STRING"/>
在这个例子中,我得到一个 属性 并用 type="OM" 保存它。现在我可以使用 Xpath 获取任何元素。您可以在 payloadFactory 中使用 Xpath。
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body></soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg expression="$ctx:config" />
</args>
</payloadFactory>
<property name="ContentType" value="application/xml" scope="axis2" type="STRING"/>
结果:
<config>
<crm>
<crmUsernamePassword>username:password</crmUsernamePassword>
</crm>
</config>
我有一个 属性 和 XML 字符串值。是否可以将 属性 值作为响应主体发送回客户端?如果是,有什么提示吗?
尝试使用 payloadfactory 调解器,但它似乎不适用于 XML 字符串。正如我所见,它适用于纯文本字符串,但无论如何都需要一些包装 XML 元素。
UPD
我的同事甚至在接受答案之前提供的替代解决方案是将 OM 属性 与 enrich mediator 一起使用。 类似的东西:
<property name="messageType" scope="axis2" type="STRING" value="application/xml"/>
<property expression="get-property('myProperty')" name="omProperty" scope="default" type="OM"/>
<enrich description="">
<source clone="true" property="omProperty" type="property"/>
<target type="body"/>
</enrich>
<respond/>
使用 OM 类型定义您的 属性。
类型 'OM' 可用于在消息上下文中设置 XML 属性 值。当与 属性 中介关联的表达式在中介期间计算为 XML 节点时,这会变得很有用。将 type 属性设置为 'OM' 后,生成的 XML 将在分配给 属性.
之前转换为 AXIOM OMElement例如:
我的xml:
<config>
<crm>
<crmUsernamePassword>username:password</crmUsernamePassword>
</crm>
</config>
我的属性:
<property name="config" expression="get-property('conf:/config.xml')" scope="default" type="OM"/>
<property name="crmUsernamePassword" expression="$ctx:config//crm/crmUsernamePassword" scope="default"
type="STRING"/>
在这个例子中,我得到一个 属性 并用 type="OM" 保存它。现在我可以使用 Xpath 获取任何元素。您可以在 payloadFactory 中使用 Xpath。
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body></soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg expression="$ctx:config" />
</args>
</payloadFactory>
<property name="ContentType" value="application/xml" scope="axis2" type="STRING"/>
结果:
<config>
<crm>
<crmUsernamePassword>username:password</crmUsernamePassword>
</crm>
</config>