axis2 架构

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

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、数据绑定

3、信息模型
信息模型保存了axis2所有的信息和状态,这些模型包含两个方面的信息,1、Description保存所有的配置信息,在axis2整个生命周期都有效。 2、Context管理所有的动态信息以及动态信息的生命周期。

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

XML 处理模型
xml处理模型是一个单独的模块,更多http://axis.apache.org/axis2/java/core/docs/OMTutorial.html

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()同步或者异步方式发送消息。

传输
传输只有两个概念:Transport Senders 和Transport Receivers,他们都是通过axis2.xml配置的。

代码生成:
代码生成整个原理如下:

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

数据绑定

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值