日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

给一份Webservice接口通用实现!!

發(fā)布時(shí)間:2025/7/25 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 给一份Webservice接口通用实现!! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  看到許多中小項(xiàng)目的webservice接口的源代碼,不禁有個(gè)吐槽的沖動(dòng)。除了會(huì)用CXF,Axis2等神級(jí)框架,其他的懶得動(dòng)了,都是Ctrl+V,Ctrl+C,把其他模塊的Request,Response貼過來。一旦增加某個(gè)特性,不得不在所有Request,Response遨游一遍。早知今日,何必當(dāng)初呢。

  寫一個(gè)好的Weservice Interface,關(guān)鍵是要多多總結(jié)。除了有Request,Response之外,還有很多。總結(jié)如下有:

    Request:webservice的輸入。

    Response:webservice輸出。

    DataRsponse:帶結(jié)果集的webservice輸出。

    ResultData:結(jié)果集,不同的interface,其ResultData不一樣。

    ReslutInfo:描述調(diào)用請(qǐng)求成功或者失敗的對(duì)象。

    WebServiceTemplate:模板類,定義如何調(diào)用下層函數(shù),如何處理異常錯(cuò)誤的流程

?

    ResultDataCallback:回調(diào)類,與template配合,適用【返回結(jié)果集】操作,比如【獲取用戶信息】,【下訂單】

    ResultCallback:回調(diào)類,與Template配置,適用于【不返回帶結(jié)果集的接口,比如【修改用戶名】

?

    ResponseFactory:用來組裝 webservice消息 的工廠類。

    ResultInfoFactory:用來處理異常信息的 工廠類,這個(gè)一個(gè)接口,為它實(shí)現(xiàn)一個(gè)默認(rèn)實(shí)例吧。

?

  有了這些小弟們,任何webservice接口的定義都能輕易搞定,不信我舉個(gè)例子給你,咱們以【加法】為例!

  AddRequest:

View Code public class AddRequest extends Request{private int add;private int added;public int getAdd() {return add;}public void setAdd(int add) {this.add = add;}public int getAdded() {return added;}public void setAdded(int added) {this.added = added;}}

  AddResonse:

View Code public class AddResponse extends DataResponse<AddResultData>{private AddResultData resultData;public AddResultData getResultData() {return resultData;}public void setResultData(AddResultData resultData) {this.resultData = resultData;}}

  AddResultData:

View Code public class AddResultData implements ResultData{private int sum;public AddResultData(int sum) {super();this.sum = sum;}public AddResultData() {super();}public int getSum() {return sum;}public void setSum(int sum) {this.sum = sum;} }

  一個(gè)簡(jiǎn)單的webservice接口:

View Code public class Soap {public AddResponse add(final AddRequest request){return WebServiceTemplate.doResult(new ResultDataCallback<AddRequest,AddResponse,AddResultData>(){public AddResultData done() throws Exception {return new AddResultData(request.getAdd()+request.getAdded());}public AddResponse getRsp() {return new AddResponse();}});}}

  一個(gè)簡(jiǎn)單的TestCase測(cè)試:

View Code public class TestSoap {@Testpublic void testAdd(){AddRequest add = new AddRequest();add.setAdd(1);add.setAdded(2);Soap soap = new Soap();AddResponse rsp =soap.add(add);assertEquals(3,rsp.getResultData().getSum());assertEquals("0",rsp.getResultInfo().getResultCode());assertEquals("success",rsp.getResultInfo().getResultDesc());}}

  雖然這些很簡(jiǎn)單,但是能夠解決80%的問題。剩下20%還要根據(jù)實(shí)際情況來定。況且,這些代碼在你的手中還有持續(xù)改優(yōu)化的空間。千萬不要做一個(gè)愛Copy的孩子。

  相關(guān)的代碼附件地址:【http://files.cnblogs.com/MartinChen999/webservice.rar】

?

  

轉(zhuǎn)載于:https://www.cnblogs.com/MartinChen999/archive/2012/11/18/2775861.html

總結(jié)

以上是生活随笔為你收集整理的给一份Webservice接口通用实现!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。