@ManagedOperation
 public void stopExecutors() {
   if (logger.isDebugEnabled()) {
     logger.debug("Stopping executors" + (this.shutdownForced ? "(force)" : ""));
   }
   List<ExecutorService> executorServices = new ArrayList<ExecutorService>();
   Map<String, ThreadPoolTaskExecutor> executors =
       this.applicationContext.getBeansOfType(ThreadPoolTaskExecutor.class);
   for (Entry<String, ThreadPoolTaskExecutor> entry : executors.entrySet()) {
     ThreadPoolTaskExecutor executor = entry.getValue();
     if (executor == this.shutdownExecutor) {
       logger.debug("Skipping shutdown of shutdown executor");
     } else {
       if (logger.isInfoEnabled()) {
         logger.info("Stopping executor " + executor.getThreadNamePrefix());
       }
       ExecutorService executorService = executor.getThreadPoolExecutor();
       executorServices.add(executorService);
       doShutdownExecutorService(executorService);
     }
   }
   waitForExecutors(executorServices);
   logger.debug("Stopped executors");
 }