WebServices个人总结

SOA与Web Service的关系,这是经常被混淆的两个概念。
SOA(Service-oriented architecture,面向服务的架构)。
将 企业应用系统中细粒度的功能打包成粗粒度的服务,通过中间方式(语言),
实现异构系统(操作系统、开发语言)之间的通讯、调用。

Web Services是一种面向服务的架构的技术,
(SOA并不是一种技术,而是一种软件设计理念.Web service != SOA,但Web service 是目前实现SOA的最好方式。)
向外界暴露出一个能够远程进行调用的程序,主要目的是实现不同平台的应用服务可以互操作。
为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)独立于平台、独立于开发语言的标准.
是创建可互操作的、分布式应用程序的新平台。

Web Services平台的技术。
Soap:(Simple Object Access Protocol)简单对象访问协议。是XML Web Service 的通信协议。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,它对web Services的接口进行了定义 .
UDDI是一种查找相应服务的机制,用于web Services的发布、浏览以及查找注册信息.

架构(如何工作的)
服务提供者到注册中心(uddi)注册自己的服务。服务请求者(客户端)到注册中心(uddi)找到需要的web服务,
并获得服务定义(wsdl),根据wsdl定义就可以调用相应的服务(通过soap协议)。

Web Service的主要目标是跨平台的可互操作性。
优点: 因为Soap协议,所以可以跨防火墙的进行通信 、
应用程序集成 (实现了异构系统) 、
因为不同平台的应用服务可以相互操作,所以实现了软件和数据重用
完全基于xml可扩展标记语言,所以跨语言 跨平台
缺点:通过http协议进行远程调用, 访问速度慢、稳定性问题。

Web Service也有框架:如axis1,axis2、xfire、cxf。

Apache Axis2 是Axis的后续版本,是新一代的SOAP引擎。
Axis2的主要特点有:
(1) 采用名为 AXIOM(AXIs Object Model)的新核心 XML 处理模型,利用新的XML解析器提供的灵活性按需构造对象模型。
(2) 支持不同的消息交换模式。目前Axis2支持三种模式:In-Only、Robust-In和In-Out。In-Only消息交换模式只有SOAP请求,而不需要应答;
Robust-In消息交换模式发送SOAP请求,只有在出错的情况下才返回应答;In-Out消息交换模式总是存在SOAP请求和应答。
(3) 提供阻塞和非阻塞客户端 API。
(4)* 支持内置的 Web服务寻址 (WS-Addressing) 。
(5) 灵活的数据绑定,可以选择直接使用 AXIOM,使用与原来的 Axis 相似的简单数据绑定方法,
或使用 XMLBeans、JiBX 或 JAXB 2.0 等专用数据绑定框架。
(6) 新的部署模型,支持热部署。
(7)* 支持HTTP,SMTP,JMS,TCP传输协议。
(8) 支持REST (Representational State Transfer)。

axis2是一个web service框架,以下是使用中的一些总结:

1、要传递的对象首先必须实现serializable接口

2、axis2不支持方法重载。
在对外发布的接口中不能使用方法重载,
如果你写了多个重名的方法,在该service中只会注册一个。
解决方法:更改成不同的方法名

3、axis2不支持事务。
数据库增删改查一般都需要事务处理的,但是在对外发布的接口中是不能配置事务的。
解决方法:或者写一个代理类或者直接在dao中进行事务管理。

4、AXIS2 1.4.1不支持java.util.Date type
Time portion of java.util.Date is missing from SOAP response in Axis2 1.5
瞧瞧axis2 的这些个bug,使用起来太不方便了。
虽然Apache的官方网站的bug页上有解决方案,但是我把DateService.aar文件考下来后仍然报相同的错误:

Axis2 1.5只能返回日期部分,时间部分丢失了!
解决方法:把Date类型都改成String类型的,这样是最安全的,但可能跟要求不符,应该不能算是一个好的解决方案吧。

5、axis2在java中不支持二进制对象的传递如inputSream,。
解决方法:将二进制流转换为只能传递byte[]。

6、axis2不能传递list、Map 类型的数据集合。
解决方法:将list转换成数组类型。

项目中如何使用:
在我们的项目中,首先是将项目分布成几个小模块,对这些小的模块进行编码.
编码完成以后在通过webService连接起来,进行测试,这样做的好处就是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值