- 论坛徽章:
- 0
|
看到许多中小项目的webservice接口的源代码,不禁有个吐槽的冲动。除了会用CXF,Axis2等神级框架,其他的懒得动了,都是Ctrl+V,Ctrl+C,把其他模块的Request,Response贴过来。一旦增加某个特性,不得不在所有Request,Response遨游一遍。早知今日,何必当初呢。
写一个好的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();
- }
- });
- }
- }
复制代码 一个简单的TestCase测试:- 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());
- }
- }
复制代码 |
|