博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ofbiz项目学习——阶段性小结——服务返回结果
阅读量:5314 次
发布时间:2019-06-14

本文共 3884 字,大约阅读时间需要 12 分钟。

一、返回成功

1、在.DispatcherReturnDemoService类中编写服务【returnSuccess】,内容如下:

/**     * 返回成功结果     * @param dctx     * @param context     * @return     */	public static Map
returnSuccess( DispatchContext dctx, Map
context ){ //填写服务执行的代码 //....... String message = "执行成功"; //当程序执行成功时, 返回成功结果集 Map
result = ReturnMapUtil.getSuccessMap(); result.put("message", message); return result; }

2、在servicedef文件夹下的services_dispatcher_return_demo.xml中把这两个方法配制成服务

二、返回失败

1、返回失败结果

1.1 在DispatcherReturnDemoService类中编写服务【returnError】,内容如下:

/**     * 返回失败结果     * @param dctx     * @param context     * @return     */	public static Map
returnError( DispatchContext dctx, Map
context ){ //填写服务执行的代码 //....... String message = "执行失败"; boolean errorFlag = true; //返回结果 Map
result = null; if( errorFlag ){ //当程序执行失败时, 返回成功结果集 result = ReturnMapUtil.getErrorMap("errorCode"); //这里的errorCode需要用具体的错误编码来替换 result.put("message", message); }else{ //当程序执行成功时, 返回成功结果集 result = ReturnMapUtil.getSuccessMap(); result.put("message", message); } return result; }

1.2 在servicedef文件夹下的services_dispatcher_return_demo.xml中把这两个方法配制成服务

2、在服务内部捕获异常后怎么转成失败结果返回

2.1 DispatcherReturnDemoService类中编写服务【catchError】,内容如下:

/**     * 捕获异常结果     * @param dctx     * @param context     * @return     */	public static Map
catchError( DispatchContext dctx, Map
context ){ //填写服务执行的代码 try{ //假设执行的代码中有回抛出异常的情况, 我们需要捕获这个异常 int a = 8 ; int b = 0 ; int i = a / b; }catch(Exception e){ //则把错误信息以Error级别打印到日志文件中 Debug.logError(e, module); //把指定的错误码对应的描述信息返回给服务调用者 return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0000); } //当程序执行失败时, 返回成功结果集 return ReturnMapUtil.getSuccessMap(); }

2.2 在servicedef文件夹下的services_dispatcher_return_demo.xml中把这两个方法配制成服务

3、调用一个服务后怎么判断该服务是否执行成功

3.1 在DispatcherReturnDemoService类中编写服务【checkResult】,内容如下:

/**     * 调用一个服务后怎么判断该服务是否执行成功     * @param dctx     * @param context     * @return     */	public static Map
checkResult( DispatchContext dctx, Map
context ){ //获取服务引擎 LocalDispatcher dispatcher = dctx.getDispatcher(); //..... //其它代码 //....... //调用服务 Map
output = null; try{ Map
input = FastMap.newInstance(); output = dispatcher.runSync("returnSuccess", input); }catch(Exception e){ //则把错误信息以Error级别打印到日志文件中 Debug.logError(e, module); //把指定的错误码对应的描述信息返回给服务调用者 return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0000); } //检查该服务是否已经执行成功, 如果没有执行成功,则把错误结果直接返回给上层调用者. if( !ServiceUtil.isSuccess(output) ){ return output; } //..... //其它代码 //....... //当程序执行成功时, 返回成功结果集 return ReturnMapUtil.getSuccessMap(); }

3.2 在servicedef文件夹下的services_dispatcher_return_demo.xml中把这两个方法配制成服务

4、怎么把一个服务的失败返回结果转成业务异常类抛出

4.1 在DispatcherReturnDemoService类中编写一个方法【checkResult】,内容如下: 

/**     * 怎么把一个服务的失败返回结果转成业务异常类抛出(这个仅仅是一个方法, 不是一个服务)     * @param dctx     * @param context     * @return     */	public static void returnInMethod( LocalDispatcher dispatcher ) throws BusinessException{				//.....		//其它代码		//.......				//调用服务		Map
output = null; try{ Map
input = FastMap.newInstance(); output = dispatcher.runSync("returnSuccess", input); }catch(Exception e){ //则把错误信息以Error级别打印到日志文件中 Debug.logError(e, module); //把异常类型转成指定类型,并抛出 throw new BusinessException(e,DemoErrorMapping.BASE0000); } //检查该服务是否已经执行成功, 如果没有执行成功,把返回结果转成业务异常类抛出 if( !ServiceUtil.isSuccess(output) ){ throw new BusinessException(output); } //..... //其它代码 //.......}

  

 

  

 

转载于:https://www.cnblogs.com/gzhcsu/p/11202619.html

你可能感兴趣的文章
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
ul li剧中对齐
查看>>
关于 linux 的 limit 的设置
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
vim中文帮助教程
查看>>
MySQL基础3
查看>>
云计算数据与信息安全防护
查看>>
全局设置导航栏
查看>>
RxJS & Angular
查看>>