code: @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
      Map<String, String> originalContext = MDC.getCopyOfContextMap();
      if (this.mdcContext != null) {
        MDC.setContextMap(this.mdcContext);
      }
  
      try {
        executeImpl(context);
      } finally {
        if (originalContext != null) {
          MDC.setContextMap(originalContext);
        } else {
          MDC.clear();
        }
      }
    }
docs: <p>
  Called by the <code>{@link Scheduler}</code> when a <code>{@link Trigger}</code>
  fires that is associated with the <code>Job</code>.
  </p>
  
  <p>
  The implementation may wish to set a
  {@link JobExecutionContext#setResult(Object) result} object on the
  {@link JobExecutionContext} before this method exits.  The result itself
  is meaningless to Quartz, but may be informative to
  <code>{@link JobListener}s</code> or
  <code>{@link TriggerListener}s</code> that are watching the job's
  execution.
  </p>
  
  @throws JobExecutionException if there is an exception while executing the job.