首页 > 代码库 > adapter结构异常记录
adapter结构异常记录
adapter结构异常记录,记录在这个类里,记录数据日志,在148行:
com.creditharmony.adapter.core.service.GeneralHttpService
package com.creditharmony.adapter.core.service;import java.util.Properties;import javax.servlet.http.HttpServletRequest;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;import com.creditharmony.apporveadapter.bean.BaseInfo;import com.creditharmony.apporveadapter.bean.BaseOutInfo;import com.creditharmony.apporveadapter.bean.GeneralHttpInfoModel;import com.creditharmony.apporveadapter.bean.GeneralReturnInfo;import com.creditharmony.adapter.constant.Constant;import com.creditharmony.apporveadapter.constant.ErrorType;import com.creditharmony.adapter.constant.MsgKey;import com.creditharmony.apporveadapter.exception.AdapterException;import com.creditharmony.adapter.utils.AdapterUtils;import com.creditharmony.adapter.utils.Messages;import com.creditharmony.common.util.PropertyUtil;import com.creditharmony.common.util.SpringContextHolder;/** * @Class Name GeneralHttpService * @author yourname * @Create In 2016年12月3日 */@Controllerpublic class GeneralHttpService { /** 业务挡板测试区分名. */ private static final String BAFFLE_FIX = "_Baffle"; /** 日志. */ private static final Logger logger = Logger.getLogger(GeneralHttpService.class); /** 属性文件. */ static Properties properties = PropertyUtil.getProperties(Constant.CONFIG_PROPERTY); /** HttpServletRequest. */ @Autowired private HttpServletRequest request; /** 参数记录处理. */ @Autowired private IParamRecord paramRecord; /** * Client端调用统一接口. * 实现分发器效果 * * @param paramObj 调用参数 * @return 返回参数 */ @ResponseBody @RequestMapping(value = "http://www.mamicode.com/http/generalHttpService", method = RequestMethod.POST) public String exec(@RequestParam("content") String content) { // 取得唯一序列号 String serialNum = AdapterUtils.getSerialNum(); // 获得调用客户端IP地址 String clientIp = getClientIP(request, serialNum); // 大金融的报文转为Model对象 GeneralHttpInfoModel paramObj = JSON.parseObject(content, GeneralHttpInfoModel.class); logger.info(Messages.get(MsgKey.GENERALSERVICE_INPARAM, new String[] { content })); // 参数日志记录: 传入参数 paramRecord.doInParamRecord( serialNum, content, clientIp, paramObj.getServiceName()); // 取得业务参数Json String paramStr = paramObj.getParam(); logger.info(Messages.get(MsgKey.GENERALSERVICE_INPARAM, new String[] { paramStr })); // 参数日志记录: 传入参数 paramRecord.doInParamRecord( serialNum, paramStr, clientIp, paramObj.getServiceName()); /* * 处理:取得业务实现类 * 利用传入的serviceName,通过反射方式取得该业务实际类 */ IBaseService baseService = this.initService(paramObj.getServiceName()); /* * 处理:调用实际业务处理 * 通过父类抽象方法调用实现子类具体业务调用 */ GeneralReturnInfo out = new GeneralReturnInfo(); BaseOutInfo outParam = null; // 返回对象参数 String outParamStr = ""; try { // 将传入的JSON报文转为Bean对象 BaseInfo inBean = (BaseInfo) JSON.parseObject(paramStr, doCreatInObject(paramObj.getInClassName()).getClass()); inBean.setSerialNum(serialNum); outParam = baseService.exec(inBean); out.setOutParam(JSON.toJSONString(outParam, SerializerFeature.WriteMapNullValue)); outParamStr = JSON.toJSONString(out, SerializerFeature.WriteMapNullValue); /* * 处理:返回参数记录处理. */ paramRecord.doOutParamRecord( serialNum, outParamStr); logger.info(Messages.get(MsgKey.GENERALSERVICE_OUTPARAM, new String[] { outParamStr })); } catch (Exception e) { boolean isNewExeption = e instanceof AdapterException; AdapterException businessException = null; // 将新产生的例外封装 if (isNewExeption == false) { businessException = new AdapterException(ErrorType.BUSSINESS_ERROR, e, "接口服务端产生异常."); } else { businessException = (AdapterException) e; } out.setErrorType(businessException.getErrorType()); out.setErrorMsg(businessException.getMessage()); out.setBaseOutInfo(businessException.getInfoOutObj()); StringBuilder paramSb = new StringBuilder(); // 取得返回对象日志 paramSb.append("errorType=").append(out.getErrorType()) .append(", errorMsg=").append(out.getErrorMsg()); outParamStr = paramSb.toString(); /* * 处理:异常错误记录处理. */ logger.error(Messages.get( MsgKey.ERROR_SYSTEM_STACK, new String[] { businessException.getExceptionStackTrace() })); paramRecord.doExceptionRecord(serialNum, businessException); /* * 处理:返回参数记录处理. */ paramRecord.doOutParamRecord( serialNum, outParamStr); logger.info(Messages.get(MsgKey.GENERALSERVICE_OUTPARAM, new String[] { outParamStr })); } return outParamStr; } /** * 反射传入Bean对象. * @param className 传入Bean包名+类名 * @return Bean对象 */ private Object doCreatInObject(String className) { Object obj = null; try { Class<?> c = Class.forName(className); obj = c.newInstance(); } catch (Exception e) { e.printStackTrace(); } return obj; } /** * 获取客户端IP地址. * * @param serialNum 请求唯一序列号 * @return IP地址 */ private String getClientIP(HttpServletRequest request, String serialNum) { try { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); } catch (Exception e) { // 异常错误记录 AdapterException businessException = new AdapterException(e); paramRecord.doExceptionRecord(serialNum, businessException); } return ""; } /** * 业务处理类实现. * 通过反射,实现业务对象 * @param serviceName 业务实现类名 * @return 业务实现类 */ private IBaseService initService(String serviceName) { String serviceId = ""; boolean isBaffle = Boolean.parseBoolean(properties.getProperty(serviceName + BAFFLE_FIX)); // true的场合, 运行挡板程序 if (isBaffle) { // 测试挡板程序 serviceId = serviceName + BAFFLE_FIX; } else { serviceId = serviceName; } IBaseService baseService = SpringContextHolder.getBean(serviceId); return baseService; }}
adapter结构异常记录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。