WSO2 ESB XML定义语法
Posted leolzi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSO2 ESB XML定义语法相关的知识,希望对你有一定的参考价值。
1.参考文件位置: http://synapse.apache.org/userguide/config.html
Synapse ESB(wso2中使用相同的配置)使用基于XML的配置语言进行配置。这是由Synapse社区创建和维护的域特定语言(DSL)。该语言设计简单,直观且易于学习。此语言中的所有XML元素(标记)必须使用命名空间URL http://ws.apache.org/ns/synapse进行命名空间限定。如下图:
文档结构:
2.配置语法
1.registry 配置
<registry>元素用于定义运行时使用的注册表适配器。注册表提供程序为正在使用的注册表指定实现类,并且可选地指定特定注册表实现可能需要的许多配置参数。下面给出了概要配置。
<registry provider="string"/> <parameter name="string">text | xml</parameter>* </registry>
实例:
<registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
<parameter name="root">file:./repository/conf/sample/resources/</parameter> <parameter name="cachableDuration">15000</parameter> </registry>
‘root‘参数指定已加载资源的注册表的根URL。SimpleURLRegistry键是路径片段,当与根前缀组合时,将形成引用资源的完整URL。
‘cachableDuration‘参数指定应缓存从注册表加载的资源的毫秒数。更高级的注册表实现允许为不同的资源指定不同的可缓存持续时间,或者将某些资源标记为永不过期。(例如,检查基于Apache Synapse的WSO2 ESB实现)
2.Local Entry (Local Registry) Configuration
Local Entry提供了将各种外部配置工件导入Synapse runtime的便捷方法。这包括WSDL,策略,XSLT文件和脚本。在服务器启动时解析本地条目定义,并将引用的配置加载到内存中,直到服务器关闭为止。其他功能组件(如序列,端点和代理服务)可以使用Local Entry引用这些本地定义的内存中配置元素。
<localEntry>元素用于声明Synapse实例的本地注册表项。
<localEntry key="string" [src="url"]>text | xml</localEntry>
Local Entry可能包含指定为内联内容的静态文本或静态XML。
<localEntry key="version">0.1</localEntry>
<localEntry key="validate_schema">
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
...
</xs:schema> </localEntry>
请注意包含一些静态XML架构内容的validate_schema 的Local Entry。诸如validate mediator之类的中介可以引用此Local Entry来加载其XML模式定义。
Local Entry还可以指向可以从中加载内容的远程URL(使用‘src‘属性指定)。这样,用户无需在Synapse配置中指定所有外部配置。所需的工件可以保存在文件系统上或托管在Web服务器上,Synapse可以使用Local Entry定义从中获取它们。以下示例显示如何配置Local Entry以从本地文件系统加载XSLT文件。
<localEntry key =“xslt-key-req”src =“file:repository / conf / sample / resources / transform / transform.xslt”/>
值得注意的是,Synapse仅在服务器启动期间加载Local Entry内容(即使使用远程URL定义它们)。因此,在重新启动服务器之前,对远程工件所做的任何更改都不会反映在Synapse上。这与远程注册表的行为形成对比,在远程注册表中,一旦缓存周期到期,Synapse就会重新加载配置工件。
3.Sequence配置
Sequence类似于Synapse中的消息流,由一组调解器组成。
<sequence>元素用于定义Synapse配置中的Sequence。
可以使用名称定义Sequence,以便可以在Synapse配置中重复使用它们。名为“main”和“fault”的序列在Synapse配置中具有特殊意义。‘main‘序列处理‘ Message Mediation ‘接受的任何消息”。如果Synapse遇到故障,则调用‘fault‘序列,并且不通过其‘onError‘属性为序列指定自定义错误处理程序。如果“主”或“故障”序列未在本地定义或未在注册表中找到,则Synapse auto会在初始化时生成合适的默认值。
可以通过指定对注册表项的密钥引用来定义动态Sequence。随着远程注册表项的更改,将根据指定的缓存持续时间和到期动态更新Sequence。如果对Sequence启用了跟踪,则通过Sequence处理的所有消息都会通过每个中介步骤将跟踪信息写入通过log4j.properties配置配置的“trace.log”文件。
下面给出了序列定义的语法概要。
<sequence name="string" [onError="string"] [key="string"] [trace="enable"] [statistics="enable"]>
mediator*
</sequence>
‘onError‘属性可用于定义自定义错误处理程序序列。可以通过在序列上将“statistics”属性设置为“enable”来激活统计信息收集。在此模式下,序列将跟踪处理的消息数量及其处理时间。然后可以通过Synapse统计API检索此统计信息。
sequence元素的所有直接子元素必须是有效的调解器。以下示例显示了由三个子调解器组成的序列配置。
<sequence name =“main”onError =“errorHandler”> <log /> <property name =“test”value =“test value”/> <send /> </ sequence>
序列还可以将消息移交给其他序列。在这个意义上,序列类似于较大程序中的过程。在许多编程语言中,过程可以调用其他过程。请参阅以下示例序列配置。
<sequence name =“foo”> <log /> <property name =“test”value =“test value”/> <sequence key =“other_sequence”/> <send /> </ sequence>
注意如何使用‘sequence‘元素将消息传递给名为‘other_sequence‘的序列。‘key‘属性可以指向另一个命名序列,本地条目或远程注册表项。
以上是关于WSO2 ESB XML定义语法的主要内容,如果未能解决你的问题,请参考以下文章
WSO2:wso2中的xml到json数据映射esb:json消息包含在soap信封中