一份Service的通用接口编写!

来源:互联网 发布:qq号定位软件 编辑:程序博客网 时间:2024/06/06 04:34

写一个好的Weservice Interface,关键是要多多总结。除了有Request,Response之外,还有很多。总结如下有:

    Request:webservice的输入。

    Response:webservice输出。

    DataRsponse:带结果集的webservice输出。

    ResultData:结果集,不同的interface,其ResultData不一样。

    ReslutInfo:描述调用请求成功或者失败的对象。

    WebServiceTemplate:模板类,定义如何调用下层函数,如何处理异常错误的流程

 

    ResultDataCallback:回调类,与template配合,适用【返回结果集】操作,比如【获取用户信息】,【下订单】

    ResultCallback:回调类,与Template配置,适用于【不返回带结果集的接口,比如【修改用户名】

 

    ResponseFactory:用来组装 webservice消息 的工厂类。

    ResultInfoFactory:用来处理异常信息的 工厂类,这个一个接口,为它实现一个默认实例吧。

 

  有了这些小弟们,任何webservice接口的定义都能轻易搞定,不信我举个例子给你,咱们以【加法】为例!

  AddRequest:

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:

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

AddResultData:

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;    }}

一个简单的WebService接口:
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();            }        });    }}

一个简单的RestCase测试:

public class TestSoap {        @Test    public 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());    }}

虽然这些很简单,但是能够解决80%的问题。剩下20%还要根据实际情况来定。况且,这些代码在你的手中还有持续改优化的空间。千万不要做一个爱Copy的孩子。    

相关的代码附件地址:http://files.cnblogs.com/MartinChen999/webservice.rar

转载来源:http://www.cnblogs.com/MartinChen999/archive/2012/11/18/2775861.html

原创粉丝点击