读书人

兑现通用的CRUD之二用jsonRPC打通B/

发布时间: 2012-11-08 08:48:11 作者: rapoo

实现通用的CRUD之二—用jsonRPC打通B/S的任督二脉

?

static public Object handle(char method,HashMap<String, Object> rm,String sn,HttpServletRequest request) throws Exception {// TODO Auto-generated method stubif(sn==null || sn.trim().equals(""))sn = DEFAULTHANDLER;//session检查 为空且非登录请求/*if(method!=METHOD_LOGIN){throw new ServletException(Info.ERR_INVALID_SESSION);}*///如果存在before回调String cn = "";String[] cns= (String[])rm.get("cns");if(cns!=null){cn = cns[0];}//根据HHUtil中对sn+method的事务要求,采用编程决定是否启动事务管理Integer transanctionMode = hhutil.getTransactionMode(sn,method);PlatformTransactionManager transactionManager=null;TransactionStatus transactionStatus=null;if(transanctionMode!=null){transactionManager=(PlatformTransactionManager)Cfg.getBean("transactionManager"); TransactionDefinition transactionDefinition=new DefaultTransactionDefinition(transanctionMode);transactionStatus=transactionManager.getTransaction(transactionDefinition);}try{IHandleHook hcb = hhutil.getHandleHook(sn, method, cn);if(hcb!=null)hcb.beforeHandle(method,rm,request);Object result= getHandleImpl(sn).handle(method,rm,request);//如果存在after回调if(hcb!=null)hcb.afterHandle(method, rm, request, result);if(transactionManager!=null)transactionManager.commit(transactionStatus);return result;}catch(Exception e){e.printStackTrace();if(transactionManager!=null)transactionManager.rollback(transactionStatus);throw e;}}?

该方法处理调用的前后的切面,允许在默认处理前后便携特殊处理。另外,允许将多个调用封装为一个事务。

进一步编写数据库CRUD操作的服务作为一个handle实例。

?

?附件说明如下:

BObj.java——对象的部分属性形态

Handler.java——jsonRPC调用的总入口,负责调用前后特殊逻辑调度和事务处理

?

HDDefault.java——负责数据库通用操作的服务

?

HDUtil——数据库操作辅助工具类

?

<!--EndFragment-->

读书人网 >JavaScript

热点推荐