axis2 架构

axis2 架构1 设计背景主要是为了实现接口和实现分离 多语言胡同等功能 axis2 设计了 SOAP 发送者和 SOAP 接收者 传输一个 SOAP 消息需要这两方的参入

大家好,欢迎来到IT知识分享网。

axis2作为中间件处理SOAP消息,业务只需要关注业务实现,无需关注背后SOAP消息的处理。

2、xis2 架构
核心模块
2.1、信息模型
2.2、XML 处理模型
2.3、SOAP 处理模型
2.4、部署模型
2.5、客户端API
2.6、接入传输模型

其他模块
2.7.1、代码生成
2.7.2、数据绑定

垂直模型提供了一种能力,可以从当前的层级寻找键值对,当找不到时,去上一层级查找。

SOAP处理模型

如上图所示,axis2引擎定义了两种handler消息的pipe,分别是in pipe和out pipe,MEPs复杂消息转换模型就是在这种pipe中完成的。soap消息处理流程提供了一种拓展能力,能定义(global,service、operation)handler加入到in pipe或者out pipe中。
axis2引擎的handler 提供了转换消息的能力和修改消息体的能力。
应用利用Client发送一个SOAP message,axis2 Engine有两个方法send()、receive()方法,使用send方法发送消息,进入都out pipe,out pipe处理完消息后,调用Transport sender 发送消息到目的端,Transport Listener 接收到消息后,读取SOAP 消息调用Axis2 Engine receive(),进行in pipe,in pipe 转换消息后,调用 Message Receiver,转交给实际的业务处理。
上面in pipe和out pipe 中不同阶段的handler,被称为phases,phase 有不同的类型,

axis2 默认处理模型
axis2提供了特殊默认的处理模型
1、Dispatchers phase: 作用是查找服务名、操作名。Dispatchers 位于in pipe。如果你想让消息发往或者调用特殊方法,可以在Dispatchers phase加入一些Handler,例如WS-Addressing information, URI information, SOAP action information等。
2、Message Receiver: 消费SOAP 消息,交给应用处理,它是in-pipe最后一个handler。
3、Transport sender:发送SOAP消息到应用的Transport Listener,它是out-pipe左后一个handler。

 处理接收消息 

Transport Listener接收到消息后,只是稍微解析一下,SOAP消息解析交给in-pipe处理,主要处理阶段如下:
Transport Phase:主要处理一些特殊信息,例如校验消息,查找消息版本,添加一些信息到Message Context中。
Pre-Dispatch Phase:处理消息分发到Dispatch中,例如解析addressing,存放到Message Context中。
Dispatch Phase:主要查找service、operation,存放到Message Context中。
Post-Dispatch Phase:校验service、operation是否存在,不存在包service not found类型的错误。
User Defined Phases:用户可以添加一些handler
Message Validation Phase:校验Message Context中信息是否正确。
Message Processing Phase:处理业务逻辑阶段。

 处理返回消息 

Message Initialize Phase:消息初始化,业务消息转化为SOAP message。
User Phases:用户可以添加一些handler
Transports Phase:发送消息

扩展消息处理模型
扩展上述处理器可以继承handlers 或者 modules.
有两种方式添加处理器的方式。
1、添加继承Handler(在phase头、在phase未、在一个处理器之前,在一个处理器之后)
2、添加一个modules(包含一系列handler和一个与descriptor关联的phase 规则)
module一段加入axis2引擎中,应该放入到合适的phase,module通常实现WS-*功能,例如WS-Addressing。

Client API
1、消息转化模式
2、one-way、two-way方式传输
3、client api 异步和同步传输
one-way: client api 提供了ServiceClient.fireAndForget(),方式发送消息,服务端不响应,当前只支持HTTP,SMTP、TCP等场景,HTTP只会返回http 202.
two-way: ServiceClient.sendReceive()或者sendReceiveNonBlocking()同步或者异步方式发送消息。

wsdl最终生成code和xsl,显现接口和实现分离。

数据绑定

数据绑定四代码生成的一个拓展插件,它有以下几种绑定:
ADB: axis Data Binding
XMLBeans
JAXB-RI
JibX

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149844.html

(0)
上一篇 2025-03-21 22:20
下一篇 2025-03-21 22:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信