All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yqjr.framework.base.BaseWebService Maven / Gradle / Ivy

/**
 * 
 */
package com.yqjr.framework.base;

import javax.xml.ws.Holder;

import com.yqjr.framework.component.config.Configuration;
import com.yqjr.framework.component.log.InteractiveLogger;
import com.yqjr.framework.component.log.Logger;
import com.yqjr.framework.component.mapper.JsonMapper;
import com.yqjr.framework.datatype.BizzException;
import com.yqjr.framework.datatype.Date;
import com.yqjr.framework.datatype.ExceptionCode;
import com.yqjr.modules.serverlog.model.ServerLogModel;

/**
 * ClassName: BaseWebService 
* Description: 框架webservice基类,用于处理框架webservice的通用逻辑
* Create By: admin
* Create Date: 2017年5月19日 下午5:35:04
* Modified By:
* Modified Date:
* Modified Content:
* Version: 1.0
*/ public abstract class BaseWebService
, Response extends BaseResponseDTO> { private static final String CATEGORY = BaseWebService.class.getName(); private static Logger logger = Logger.getLogger(); private static final boolean SAVE_MESSAGE = Configuration.getConfig() .getBooleanValue("framework.interactivelog.savemessage"); /** * Description: 业务处理逻辑
* Create By: admin
* Create Date: 2017年6月15日 上午10:57:59 * * @param header 公共头信息 * @param request 公共请求信息 * @param response 公共返回信息 */ public void process(Holder
header, Request request, Holder response) { long begin_timestamp = System.currentTimeMillis(); Header headerObject = header.value; InteractiveLogger serverLogger = InteractiveLogger.getInteractiveLogger(InteractiveLogger.SERVER_LOGGER); boolean updateLog = false; try { // Header校验 headerObject.validate(); headerObject.extValidate(); logger.info(CATEGORY, "接收到服务请求:" + headerObject); // 登记交易流水 ServerLogModel log = new ServerLogModel(); log.setSerialNo(headerObject.getSerialNo()); log.setChannel(headerObject.getChannel()); log.setServiceCode(headerObject.getServiceCode()); log.setTransactionTime(new Date(headerObject.getTransactionTime(), "yyyyMMddHHmmss")); log.setToken(headerObject.getToken()); log.setRequestTime(new Date()); if (SAVE_MESSAGE) log.setReceiveMessage(JsonMapper.toJsonString(request)); serverLogger.saveLog(log); updateLog = true; // RequestDTO检查 request.validate(); // 执行业务逻辑 response.value = doProcess(request); // 返回应答信息 ExceptionCode success = ExceptionCode.WS_0000; headerObject.setReplyCode(success.getReplyCode()); headerObject.setReplyText(success.getReplyText()); // 更新交易流水状态 if (updateLog) { log = new ServerLogModel(); log.setSerialNo(headerObject.getSerialNo()); log.setResponseTime(new Date()); log.setResponseToken(headerObject.getToken()); log.setSendMessage(JsonMapper.toJsonString(response.value)); log.setReplyCode(success.getReplyCode()); log.setReplyText(success.getReplyText()); serverLogger.performanceSaveLog(log); } logger.info(CATEGORY, String.format("服务%s执行成功,执行耗时%d毫秒", headerObject.toString(), (System.currentTimeMillis() - begin_timestamp))); } catch (Exception e) { logger.error(CATEGORY, String.format("服务%s执行失败,执行耗时%d毫秒", headerObject.toString(), (System.currentTimeMillis() - begin_timestamp)), e); BizzException bizEx = null; if (e instanceof BizzException) { bizEx = ((BizzException) e); } else { bizEx = new BizzException(ExceptionCode.WS_9999); } headerObject.setReplyCode(bizEx.getReplyCode()); String extMessage = bizEx.getErrorMessage(); headerObject.setReplyText(bizEx.getReplyText() + extMessage); // 更新交易流水状态 try { if (updateLog) { ServerLogModel log = new ServerLogModel(); log.setSerialNo(headerObject.getSerialNo()); log.setResponseTime(new Date()); log.setResponseToken(headerObject.getToken()); if (SAVE_MESSAGE) log.setSendMessage(JsonMapper.toJsonString(response.value)); log.setReplyCode(bizEx.getReplyCode()); log.setReplyText(bizEx.getReplyText()); serverLogger.performanceSaveLog(log); } } catch (Exception ex) { logger.error(CATEGORY, "交易流水更新异常", ex); } } } /** * Description: 服务业务逻辑处理
* Create By: admin
* Create Date: 2017年6月15日 上午10:58:25 * * @param request 请求信息 * @return 返回信息 */ public abstract Response doProcess(Request request); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy