一、返回成功
1、在.DispatcherReturnDemoService类中编写服务【returnSuccess】,内容如下:
/** * 返回成功结果 * @param dctx * @param context * @return */ public static Map<String,Object> returnSuccess( DispatchContext dctx, Map<String,Object> context ){ //填写服务执行的代码 //....... String message = "执行成功"; //当程序执行成功时, 返回成功结果集 Map<String,Object> result = ReturnMapUtil.getSuccessMap(); result.put("message", message); return result; }
2、在servicedef文件夹下的services_dispatcher_return_demo.xml中把这两个方法配制成服务
<service name="returnSuccess" engine="java" location="DispatcherReturnDemoService" invoke="returnSuccess"> <attribute name="returnCode" type="Map" mode="OUT" optional="true" /> </service>
二、返回失败
1、返回失败结果
1.1 在DispatcherReturnDemoService类中编写服务【returnError】,内容如下:
/** * 返回失败结果 * @param dctx * @param context * @return */ public static Map<String,Object> returnError( DispatchContext dctx, Map<String,Object> context ){ //填写服务执行的代码 //....... String message = "执行失败"; boolean errorFlag = true; //返回结果 Map<String,Object> 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中把这两个方法配制成服务
<service name="returnError" engine="java" location="DispatcherReturnDemoService" invoke="returnError"> <attribute name="returnCode" type="Map" mode="OUT" optional="true" /> </service>
2、在服务内部捕获异常后怎么转成失败结果返回
2.1 DispatcherReturnDemoService类中编写服务【catchError】,内容如下:
/** * 捕获异常结果 * @param dctx * @param context * @return */ public static Map<String,Object> catchError( DispatchContext dctx, Map<String,Object> 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中把这两个方法配制成服务
<service name="catchError" engine="java" location="DispatcherReturnDemoService" invoke="catchError"> <attribute name="returnCode" type="Map" mode="OUT" optional="true" /> </service>
3、调用一个服务后怎么判断该服务是否执行成功
3.1 在DispatcherReturnDemoService类中编写服务【checkResult】,内容如下:
/** * 调用一个服务后怎么判断该服务是否执行成功 * @param dctx * @param context * @return */ public static Map<String,Object> checkResult( DispatchContext dctx, Map<String,Object> context ){ //获取服务引擎 LocalDispatcher dispatcher = dctx.getDispatcher(); //..... //其它代码 //....... //调用服务 Map<String,Object> output = null; try{ Map<String,Object> 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中把这两个方法配制成服务
<service name="returnError" engine="java" location="DispatcherReturnDemoService" invoke="returnError"> <attribute name="returnCode" type="Map" mode="OUT" optional="true" /> </service>
4、怎么把一个服务的失败返回结果转成业务异常类抛出
4.1 在DispatcherReturnDemoService类中编写一个方法【checkResult】,内容如下:
/** * 怎么把一个服务的失败返回结果转成业务异常类抛出(这个仅仅是一个方法, 不是一个服务) * @param dctx * @param context * @return */ public static void returnInMethod( LocalDispatcher dispatcher ) throws BusinessException{ //..... //其它代码 //....... //调用服务 Map<String,Object> output = null; try{ Map<String,Object> 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
时间: 2024-10-13 04:33:09