Exemple #1
0
        /// <summary>
        /// 지정된 예외정보를 포함하는 응답메시지를 빌드합니다. 
        /// </summary>
        /// <param name="exceptions"></param>
        /// <returns></returns>
        public static ResponseMessage CreateResponseMessageWithException(params Exception[] exceptions) {
            var responseMsg = new ResponseMessage();

            foreach(var ex in exceptions)
                responseMsg.AddError(ex);

            return responseMsg;
        }
Exemple #2
0
        /// <summary>
        /// DATA 처리를 위한 요청정보를 처리해서, 응답정보를 빌드해서 반환합니다.
        /// </summary>
        /// <param name="requestMessage">요청 메시지</param>
        /// <returns>응답 메시지</returns>
        public virtual ResponseMessage Execute(RequestMessage requestMessage) {
            var responseMsg = new ResponseMessage();

            if(IsDebugEnabled)
                log.Debug("요청정보에 따른 작업을 시작합니다...");

            if(requestMessage == null) {
                if(log.IsWarnEnabled)
                    log.Warn("요청 정보가 NULL입니다.");
                responseMsg.Errors.Add(new ErrorMessage { Code = 0, Message = DataServiceTool.NoRequestProvided });
                return responseMsg;
            }

            TransactionScope txScope = null;

            try {
                // 1. 사전 작업
                //
                responseMsg.MessageId = requestMessage.MessageId;

                if(requestMessage.Transactional) {
                    if(IsDebugEnabled)
                        log.Debug("요청작업이 Transaction을 필요로 하여, Transaction을 시작합니다...");

                    txScope = AdoTool.CreateTransactionScope(TransactionScopeOption.Required, IsolationLevel.ReadCommitted);
                }

                //
                // 2. 본 작업
                //
                ExecuteInternal(requestMessage, responseMsg);


                // 3. 사후 작업
                //
                if(txScope != null) {
                    txScope.Complete();

                    if(IsDebugEnabled)
                        log.Debug("요청작업의 Transaction을 Commit 했습니다.");
                }
            }
            catch(Exception ex) {
                responseMsg.AddError(ex);

                if(log.IsErrorEnabled)
                    log.Error("요청정보에 따른 작업처리 중 예외가 발생했습니다.", ex);

                if(txScope != null)
                    txScope.Dispose();
            }

            if(IsDebugEnabled)
                log.Debug("요청정보에 따른 작업을 완료했습니다!!! Request MessageId=[{0}], Response MessageId=[{1}]", requestMessage.MessageId,
                          responseMsg.MessageId);

            return responseMsg;
        }