/** * Either invokes the queries multithreaded (max threads == * server.getMultiThreaded()) or invokes them one at a time. */ public static void processQueriesForServer(MBeanServerConnection mbeanServer, Server server) throws Exception { if (server.isQueriesMultiThreaded()) { ExecutorService service = null; try { service = Executors.newFixedThreadPool(server.getNumQueryThreads()); if (log.isDebugEnabled()) { log.debug("----- Creating " + server.getQueries().size() + " query threads"); } List<Callable<Object>> threads = new ArrayList<Callable<Object>>(server.getQueries().size()); for (Query query : server.getQueries()) { query.setServer(server); ProcessQueryThread pqt = new ProcessQueryThread(mbeanServer, query); threads.add(Executors.callable(pqt)); } service.invokeAll(threads); } finally { shutdownAndAwaitTermination(service); } } else { for (Query query : server.getQueries()) { query.setServer(server); processQuery(mbeanServer, query); } } }
public void process() throws LifecycleException, ValidationException, SchedulerException, ParseException { for (Server server : this.masterServersList) { if (server.isLocal()) { server.setLocalMBeanServer(mbeanServer); server.setAlias(fabricService.getCurrentContainerName()); } // need to inject the poolMap for (Query query : server.getQueries()) { query.setServer(server); for (OutputWriter writer : query.getOutputWriters()) { writer.setObjectPoolMap(getObjectPoolMap()); writer.start(); } } // Now validate the setup of each of the OutputWriter's per query. validateSetup(server.getQueries()); // Now schedule the jobs for execution. scheduleJob(server); } }