• 接口项目servlet的一种处理方式,将异常返回给调用者【我】


    接口项目servlet的一种处理方式,其他层有异常全部网上抛,抛到servlet层,将异常返回给调用者:

    Servlet层:

    private void processRequest(HttpServletRequest httpRequest,
                HttpServletResponse httpResponse) throws ServletException, IOException {
            
            InputStream inStream =null;
            BufferedReader br =null;
            String reJson="";
            String rtJson="";
            String tranId="";
            
            //返回报文字段
            String resultCode = "1";
            String resultMsg = "失败";
            try {
                httpRequest.setCharacterEncoding("UTF-8");  
                inStream = httpRequest.getInputStream();
                String reqUrl= httpRequest.getRequestURI();
                syslogger.info(reqUrl);
                String[] method = reqUrl.split("/", 0);
                Map headMap = this.getHeaderMap(httpRequest);
                Map params = this.getParameterMap(httpRequest);
                syslogger.info(params);
                 br = new BufferedReader(new InputStreamReader(inStream,"UTF-8"));
                 String str=br.readLine();
                 StringBuffer json = new StringBuffer();
                 while (str != null) {
                    try {
                        json.append(str);
                        str =  br.readLine();
                    } catch (Exception blExc) {
                        System.out.println("请求参数获取出错------------str:"+str);
                        throw new CommonRunException(blExc.getMessage(), blExc, "");
                    }
                }
                 reJson=json.toString();
                 syslogger.info("resultlog 请求------------"+json);
    //             String httpMethod = httpRequest.getMethod().toUpperCase();
                 System.out.println("resultlog 请求------------"+json);
                 //调用相关的程序逻辑
                 tranId=RequestUtil.getMapValue(headMap,"X-CTG-Request-Id");
                if("".equals(tranId)){
                    tranId=RequestUtil.getMapValue(headMap,"X-CTG-Request-ID");
                }
                //调用实现类参数
                 String param = "";
                try {
                    //逐层解析报文获取请求参数
                    JSONObject jsobRst1 = JSONObject.fromObject(json.toString());
                    syslogger.info("jsobRst1 请求------------"+jsobRst1); 
    //                String svcCont = jsobRst1.getString("svcCont");
    //                JSONObject requestObject = JSONObject.fromObject(svcCont);
    //                param = requestObject.get("requestObject").toString();
                    param = jsobRst1.toString();
                } catch (Exception e) {
                    System.out.println("请求参数解析出错------------str:"+json);
                    syslogger.info("解析报文出错  请求------------"+e); 
                    throw new Exception("解析报文出错  请求------------"+e);
                }
                //逻辑处理类 参考 GETcustCRMProCustationGetImagesAPI
                GETcustSyncSaleAPI logic = new GETcustSyncSaleAPI();
                //绑定参数
                 logic.injectDepObject(param);
                 //实现类执行请求
                 logic.process();
                 //调用实现类返回值处理
                 Map implRtn = new HashMap();
                 implRtn = (Map)logic.getReturnObject();
                 
                 if (implRtn.containsKey("error")) {
                     resultCode = "1";
                      resultMsg = implRtn.get("error").toString();
                }else {
                    resultCode = "0";
                    if (implRtn.containsKey("msg")) {
                        resultMsg = implRtn.get("msg").toString();
                    }else {
                        resultMsg = "成功";
                    }
                    
                }
            
                httpResponse.setCharacterEncoding("UTF-8");  
                httpResponse.setHeader("Content-type", "application/json;charset=UTF-8"); 
                //返回接口调用的处理结果
                 OutputStreamWriter objOutputStrm = new OutputStreamWriter(httpResponse.getOutputStream(),"UTF-8");
                 try {
    //                Map respMap = new HashMap();
                    JSONObject SvcCont = new JSONObject();    
                    SvcCont.put("resultCode", resultCode);
                    SvcCont.put("resultMsg", resultMsg);
    //                respMap.put("svcCont", SvcCont);
    //                JSONObject resObject = JSONObject.fromObject(respMap);
    //                syslogger.info("resultlog 返回------------"+respMap);
    //                objOutputStrm.write(resObject.toString());
    //                rtJson=resObject.toString();
                    objOutputStrm.write(SvcCont.toString());
                    rtJson=SvcCont.toString();
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    objOutputStrm.flush(); 
                    objOutputStrm.close();
                }
             
             } catch (Exception e) {
                 syslogger.info(e.toString());
                    syslogger.fatal(e.getMessage(), e);
                    throw new ServletException(e.getMessage());
             }finally{
                    try {  
                        if (br != null){  
                            br.close();  
                            br = null;  
                        }
                        if (inStream != null){  
                            inStream.close();  
                            inStream = null;  
                    }
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }finally{
    //                    setInsertSoapMsgHistory( reJson,  rtJson, 
    //                            "0", tranId,"CustSyncSale");
                    }
                }
        }
        

    service层:

    public void processLogic() {
            //返回map
            respMap = new HashMap();
                syslogger.info("processLogic start");  
                syslogger.info("paraMap start"+respMap);
                eimServiceHolder = DBServiceHolderFactory.getDBServiceHolder(IDBServiceHolderConsts.JTCRM_APP);
                //返回map
                JSONObject SvcCont = new JSONObject();
                
                Map<Object, Object> map = new HashMap<Object, Object>();
                String statusCD = null;  //接口标识
                String type = ""; 
                Map list = new HashMap();
                JSONObject jsonObject = null;
                if(paraMap == null || paraMap.equals("")){
                    syslogger.info("GETcustxxxx.processLogic............................请求报文接受异常!");   
                    return;
                }else{
                    jsonObject = JSONObject.fromObject(paraMap);
                    map = (Map)jsonObject;
                }
                System.out.println("入参:"+paraMap);
                String result = paraMap;
                statusCD = CSUtil.o2s(map.get("statusCD"));
    
                try {
                    if("1200".equals(statusCD) || "1000".equals(statusCD)){  //新建送审/审核通过
                        Object rtn = eimServiceHolder.execute(service, "insertRel", new Object[]{result});
                        respMap.put("msg", rtn.toString());
                    }else if ("1100".equals(statusCD)) {//审核不通过/删除
                        Object rtn = eimServiceHolder.execute(service, "deleteRel", new Object[]{result});
                        respMap.put("msg", rtn.toString());
                        System.out.println("删除(更新)成功");
                    }else {
                        System.out.println("入参中statusCD异常,statusCD:"+statusCD);
                        throw new Exception("入参中statusCD异常,statusCD:"+statusCD);
                    }
                    syslogger.info("respMap start"+respMap); 
                } catch (Exception e) {
                    e.printStackTrace();
                    respMap.put("error", e.toString());
                }
                
                syslogger.info("processLogic end");
                return;
        }
  • 相关阅读:
    git使用
    javascript关于事件与闭包
    Ajax和跨域
    通过触发器进行的操作
    30分钟学会jquery插件
    那些年用过的jquery插件
    网页设计常用网页技巧
    XML操作
    效果A:浏览器跳转以及判断来路客户信息
    数据库
  • 原文地址:https://www.cnblogs.com/libin6505/p/11956062.html
Copyright © 2020-2023  润新知