欢迎来到天天文库
浏览记录
ID:34482860
大小:162.93 KB
页数:9页
时间:2019-03-06
《用cxf开发restful风格webservice》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、用CXF开发RESTful风格WebService版本日期修改历史作者0.12011年6月27日文档创建陈操目录1RESTful简要介绍12开发一个普通的接口12.1定义DTO12.2定义接口22.3实现类23开发RESTful风格WebService服务端23.1定义资源(定义DTO)23.2开发接口33.3实现类43.4配置CXF(整合Spring)43.4.1接口的Spring配置文件43.4.2CXF的Spring配置文件43.4.3修改web.xml54开发RESTful风格WebService客户端(
2、Java)54.1定义客户端接口54.2定义实现类6第1页共1页机密–未经允许不得扩散1RESTful简要介绍RESTful风格的WebService之所以当下如此流行,是由于其相对于SOAP风格的WebService更简洁、更轻量级,REST风格的WebService传输的是JSON或极其简洁的XML,因而其效率和性能都比较理想。RESTful风格的WebService主张重用HTTP协议,面向资源编程(ROA)。扼要的说,RESTful风格WebService中,每一个URL即表示一个资源,比如http://
3、www.example.com/employees/1表示id为1的员工。1.如果对此URL调用HTTPGET方法,则返回员工的XML形式;2.如果对此URL调用HTTPPOST/PUT方法,则可以新增或者修改此员工;3.如果对此URL调用HTTPDELETE方法,则可以删除此员工;因此,我们在设计一个RESTful风格的接口时,一定要拥有面向资源设计的考量!此外,在实现接口的过程中,要遵循RESTful风格的几个特性,他们分别是:1.无状态性:HTTP本身即是无状态协议,因此RESTful天然的具备无状态性,具
4、备优良的水平扩展能力!2.幂等性:GET/PUT/DELETE方法具备此特性,幂等性可概述为无论重复调用多少次,其结果都一致!POST例外,不过设计的时候也可以按照此特性设计!3.唯一性:即URL地址要唯一的表示一个资源!关于事务、安全等更多的高级特性这里不阐述,有兴趣的可参考《RestfulWebService中文版》一书。下面以开发一个普通接口和开发REST风格WebService接口为对比,指导大家快速入门。2开发一个普通的接口2.1定义DTOpublicclassInfoimplementsSeriali
5、zable{privateStringid;privateStringname;privateStringdescription;publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id; 第7页共9页机密–未经允许不得扩散}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetDescription()
6、{returndescription;}publicvoidsetDescription(Stringdescription){this.description=description;}}1.1定义接口publicinterfaceSaleServiceextendsSerializable{publicListgetInfos();publicInfogetInfo(Stringid);publicvoidsaveOrUpdateInfo(Infoinfo);publicvoiddeleteInf
7、o(Stringid);}1.2实现类接口的实现,就此省略。2开发RESTful风格WebService服务端2.1定义资源(定义DTO)@XmlRootElement(name="Info")publicclassInfoimplementsSerializable{privateStringid;privateStringname;privateStringdescription;@XmlElement(name="ID")publicStringgetId(){returnid;}publicvoidset
8、Id(Stringid){this.id=id;}@XmlElement(name="NAME") 第7页共9页机密–未经允许不得扩散publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}@XmlElement(name="DESCRIPTION")publicStr
此文档下载收益归作者所有