/src/com/googlecode/jmxtrans/jobs/ServerJob.java

http://jmxtrans.googlecode.com/ · Java · 53 lines · 39 code · 8 blank · 6 comment · 2 complexity · 0a734d1367d54a5b08a8470d134cb6cb MD5 · raw file

  1. package com.googlecode.jmxtrans.jobs;
  2. import javax.management.remote.JMXConnector;
  3. import org.apache.commons.pool.impl.GenericKeyedObjectPool;
  4. import org.quartz.Job;
  5. import org.quartz.JobDataMap;
  6. import org.quartz.JobExecutionContext;
  7. import org.quartz.JobExecutionException;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import com.googlecode.jmxtrans.model.Server;
  11. import com.googlecode.jmxtrans.util.JmxUtils;
  12. /**
  13. * This is a quartz job that is responsible for executing a Server object
  14. * on a cron schedule that is defined within the Server object.
  15. *
  16. * @author jon
  17. */
  18. public class ServerJob implements Job {
  19. private static final Logger log = LoggerFactory.getLogger(ServerJob.class);
  20. public void execute(JobExecutionContext context) throws JobExecutionException {
  21. JobDataMap map = context.getMergedJobDataMap();
  22. Server server = (Server) map.get(Server.class.getName());
  23. GenericKeyedObjectPool pool = (GenericKeyedObjectPool) map.get(Server.JMX_CONNECTION_FACTORY_POOL);
  24. if (log.isDebugEnabled()) {
  25. log.debug("+++++ Started server job: " + server);
  26. }
  27. JMXConnector conn = null;
  28. try {
  29. conn = (JMXConnector)pool.borrowObject(server);
  30. JmxUtils.processServer(server, conn);
  31. } catch (Exception e) {
  32. log.error("Error", e);
  33. throw new JobExecutionException(e);
  34. } finally {
  35. try {
  36. pool.returnObject(server, conn);
  37. } catch (Exception ex) {
  38. log.error("Error returning object to pool for server: " + server);
  39. }
  40. }
  41. if (log.isDebugEnabled()) {
  42. log.debug("+++++ Finished server job: " + server);
  43. }
  44. }
  45. }