[jboss-svn-commits] JBL Code SVN: r15236 - in labs/jbosslabs/trunk/stats-server/sources/metrics: common/src/java/org/jboss/labs/metrics/common/protocol and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 19 12:18:16 EDT 2007
Author: wrzep
Date: 2007-09-19 12:18:16 -0400 (Wed, 19 Sep 2007)
New Revision: 15236
Added:
labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJobListener.java
labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsUpdateJob.java
Removed:
labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/ProjectTools.java
Modified:
labs/jbosslabs/trunk/stats-server/sources/metrics/common/project.xml
labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/ScoresService.java
labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/conf/ScoresUpdater.java
labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/Tools.java
labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresDailyUpdater.java
labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresServiceImpl.java
labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJob.java
Log:
JBLAB-891
scheduling
Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/common/project.xml
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/common/project.xml 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/project.xml 2007-09-19 16:18:16 UTC (rev 15236)
@@ -19,6 +19,18 @@
<dependencies>
<dependency>
+ <groupId>jboss-forge</groupId>
+ <artifactId>forge-common</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>quartz</groupId>
+ <artifactId>quartz</artifactId>
+ <version>1.5.2</version>
+ </dependency>
+
+ <dependency>
<groupId>jboss</groupId>
<artifactId>jboss-jmx</artifactId>
<version>1.0</version>
Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/ScoresService.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/ScoresService.java 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/ScoresService.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -24,6 +24,8 @@
import java.io.Serializable;
+import javax.naming.NamingException;
+
import org.jboss.labs.metrics.common.protocol.conf.Configuration;
@@ -33,11 +35,11 @@
public interface ScoresService extends Serializable {
- public void init(Configuration conf);
+ public void init(Configuration conf) throws NamingException;
public void ping();
- public void save();
+ public void update();
public Object invoke(org.jboss.invocation.Invocation mi) throws Exception;
Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/conf/ScoresUpdater.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/conf/ScoresUpdater.java 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/conf/ScoresUpdater.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -24,11 +24,15 @@
import java.io.Serializable;
+import org.quartz.SchedulerException;
+
/**
* @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
*/
public interface ScoresUpdater extends Serializable {
+ public void scheduleUpdate() throws SchedulerException;
+
// Life cycle methods
public void start () throws Exception;
Deleted: labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/ProjectTools.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/ProjectTools.java 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/ProjectTools.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -1,33 +0,0 @@
-package org.jboss.labs.metrics.common.tools;
-
-import java.util.Properties;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-
-import org.jboss.forge.common.ejb3.MetricsProjectsService;
-import org.jboss.logging.Logger;
-
-/**
- * @author Pawel Wrzeszcz
- */
-public class ProjectTools {
-
- private static Logger log = Logger.getLogger(ProjectTools.class);
-
- public static MetricsProjectsService getProjectsService(Properties properties) {
-
- try {
- InitialContext ic = new InitialContext(properties);
- return (MetricsProjectsService)ic.lookup("MetricsProjectsService");
-
-
- } catch (NamingException e) {
- log.warn("Unable to obtain Projects Service. " +
- "\nCause: " + e.getMessage());
- log.debug("Properties: " + properties +". ",e);
- }
-
- return null;
- }
-}
Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/Tools.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/Tools.java 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/Tools.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -20,6 +20,7 @@
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
+import org.jboss.forge.common.ejb3.MetricsProjectsService;
import org.jboss.labs.metrics.common.Constants;
import org.jboss.labs.metrics.common.protocol.ScoresService;
import org.jboss.labs.metrics.common.protocol.conf.ScoresUpdater;
@@ -42,19 +43,6 @@
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
}
-
- public static List<String> getCommaSeparatedStrings(String s) {
-
- List<String> list = new ArrayList<String>();
-
- StringTokenizer tokenizer = new StringTokenizer(s, ",");
-
- while(tokenizer.hasMoreTokens()) {
- list.add(tokenizer.nextToken().trim());
- }
-
- return list;
- }
public static String formatDate(Calendar cal) {
@@ -109,6 +97,12 @@
}
}
+ public static MetricsProjectsService getProjectsService(Properties properties) throws NamingException {
+
+ InitialContext ic = new InitialContext(properties);
+ return (MetricsProjectsService)ic.lookup("MetricsProjectsService");
+ }
+
public static ScoresService getScoresService(Properties properties) throws NamingException {
log.debug("Looking up ScoresService. " +
@@ -147,24 +141,4 @@
return updater;
}
-
- public static int parseIntProperty(Properties properties, String element,
- int defaultValue) {
-
- String string = (String) properties.get(element);
-
- if (string != null) {
-
- try {
-
- return Integer.parseInt(string);
-
- } catch (NumberFormatException e) {
-
- // Do nothing
- }
- }
-
- return defaultValue;
- }
}
Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresDailyUpdater.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresDailyUpdater.java 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresDailyUpdater.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -22,18 +22,20 @@
package org.jboss.labs.metrics.service.impl;
-import java.util.Date;
-
+import java.util.Calendar;
import org.jboss.annotation.ejb.Management;
import org.jboss.annotation.ejb.Service;
import org.jboss.labs.metrics.common.Constants;
-import org.jboss.labs.metrics.common.protocol.ScoresService;
import org.jboss.labs.metrics.common.protocol.conf.ScoresUpdater;
import org.jboss.labs.metrics.service.quartz.MetricsInitJob;
+import org.jboss.labs.metrics.service.quartz.MetricsInitJobListener;
+import org.jboss.labs.metrics.service.quartz.MetricsUpdateJob;
import org.jboss.logging.Logger;
import org.quartz.JobDetail;
+import org.quartz.JobListener;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
+import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
@@ -42,7 +44,7 @@
* @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
*/
-/*@Stateful
+/*@Stateless
@Local(ScoresUpdater.class)
@LocalBinding(jndiBinding=Constants.DAILY_SCORES_UPDATER)*/
@@ -50,39 +52,62 @@
@Management(ScoresUpdater.class)
public class ScoresDailyUpdater implements ScoresUpdater {
-
private static final long serialVersionUID = 2272792275281319486L;
private Logger log = Logger.getLogger(ScoresDailyUpdater.class);
+ private static Scheduler scheduler;
public void start () throws Exception {
log.info("ScoresDailyUpdater initialization");
try {
- scheduleUpdates();
+ scheduleInit();
} catch (SchedulerException e) {
log.warn("Quartz initialization failed", e);
}
}
- private void scheduleUpdates() throws SchedulerException {
+ private void scheduleInit() throws SchedulerException {
- // Grab the Scheduler instance from the Factory
- Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
+ if (scheduler == null) {
+ scheduler = StdSchedulerFactory.getDefaultScheduler();
+ }
- // and start it off
scheduler.start();
JobDetail jobDetail = new JobDetail("metricsInitJob",
null,
MetricsInitJob.class);
-
- Trigger trigger = TriggerUtils.makeImmediateTrigger("metricsInitTrigger", 0, 60*1000);
- trigger.setStartTime(new Date());
- trigger.setName("metricsInitTrigger");
+ JobListener jobListener = new MetricsInitJobListener();
+ jobDetail.addJobListener(jobListener.getName());
+
+ scheduler.addJobListener(jobListener);
+
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.MINUTE, 1);
+
+ Trigger trigger = TriggerUtils.makeImmediateTrigger("metricsInitTrigger", SimpleTrigger.REPEAT_INDEFINITELY, 60*1000);
+ trigger.setStartTime(cal.getTime());
+ trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
scheduler.scheduleJob(jobDetail, trigger);
}
+
+ public void scheduleUpdate() throws SchedulerException {
+
+ if (scheduler == null) {
+ scheduler = StdSchedulerFactory.getDefaultScheduler();
+ }
+
+ System.out.println("schedule update");
+
+ JobDetail jobDetail = new JobDetail("meticsUpdateJob",
+ null,
+ MetricsUpdateJob.class);
+ Trigger trigger = TriggerUtils.makeDailyTrigger("metricsUpdateTrigger", 18, 18);
+
+ scheduler.scheduleJob(jobDetail, trigger);
+ }
}
Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresServiceImpl.java 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresServiceImpl.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -23,7 +23,6 @@
package org.jboss.labs.metrics.service.impl;
import java.rmi.RMISecurityManager;
-import java.util.List;
import java.util.Properties;
import javax.naming.NamingException;
@@ -32,14 +31,9 @@
import org.jboss.annotation.ejb.Service;
import org.jboss.labs.metrics.common.Constants;
-import org.jboss.labs.metrics.common.exceptions.ScoresException;
import org.jboss.labs.metrics.common.protocol.ScoresService;
import org.jboss.labs.metrics.common.protocol.conf.Configuration;
-import org.jboss.labs.metrics.common.protocol.conf.ScoresUpdater;
-import org.jboss.labs.metrics.common.tools.ProjectTools;
import org.jboss.labs.metrics.common.tools.Tools;
-import org.jboss.labs.metrics.service.DefaultConfiguration;
-
import org.jboss.forge.common.ejb3.MetricsProjectsService;
import org.jboss.invocation.Invocation;
@@ -60,8 +54,14 @@
private Properties projectsServiceProperties;
- public void init(Configuration conf) {
+ private boolean initialized = false;
+
+ public void init(Configuration conf) throws NamingException {
+ if (initialized) {
+ return;
+ }
+
log.info("ScoresService initialization");
if (System.getSecurityManager() == null) {
@@ -70,15 +70,16 @@
projectsServiceProperties = conf.getProjectsServiceProperties();
- MetricsProjectsService service = ProjectTools.getProjectsService(projectsServiceProperties);
- log.info("Service: " + service);
+ MetricsProjectsService service = Tools.getProjectsService(projectsServiceProperties);
service.ping();
+
+ initialized = true;
}
- public void save() {
+ public void update() {
- // TODOs
+ log.debug("upate");
}
public void ping() {
Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJob.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJob.java 2007-09-19 15:17:59 UTC (rev 15235)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJob.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -23,8 +23,6 @@
package org.jboss.labs.metrics.service.quartz;
import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
-
import org.jboss.labs.metrics.common.Constants;
import org.jboss.labs.metrics.common.protocol.ScoresService;
import org.jboss.labs.metrics.service.DefaultConfiguration;
@@ -33,12 +31,17 @@
import org.jboss.mx.util.MBeanServerLocator;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+
public class MetricsInitJob implements Job {
private static Logger log = Logger.getLogger(MetricsInitJob.class);
- public void execute(JobExecutionContext context) {
+ public void execute(JobExecutionContext context) throws JobExecutionException {
log.info("execute");
@@ -51,8 +54,8 @@
scoresService.init(new DefaultConfiguration());
- } catch (MalformedObjectNameException e) {
- log.warn("Unable to get ScoresService", e);
+ } catch (Exception e) {
+ throw new JobExecutionException(e, false);
}
}
}
Added: labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJobListener.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJobListener.java (rev 0)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJobListener.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.labs.metrics.service.quartz;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+
+import org.jboss.labs.metrics.common.tools.Tools;
+import org.jboss.logging.Logger;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.JobListener;
+import org.quartz.SchedulerException;
+
+public class MetricsInitJobListener implements JobListener {
+
+ private static Logger log = Logger.getLogger(MetricsInitJobListener.class);
+
+ public String getName() {
+ return "MetricsInitJobListener";
+ }
+
+ public void jobExecutionVetoed(JobExecutionContext context) {}
+
+ public void jobToBeExecuted(JobExecutionContext context) {}
+
+ public void jobWasExecuted(JobExecutionContext context,
+ JobExecutionException exception) {
+
+ if (exception == null) {
+ try {
+ context.getScheduler().unscheduleJob("metricsInitTrigger", null);
+
+ Tools.getScoresUpdater().scheduleUpdate();
+
+ } catch (SchedulerException e) {
+ log.warn("Unable to unschedule job", e);
+ }
+ return;
+ }
+
+ log.warn("MetricsInitJob execution failed. Rescheduling");
+ }
+}
Added: labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsUpdateJob.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsUpdateJob.java (rev 0)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsUpdateJob.java 2007-09-19 16:18:16 UTC (rev 15236)
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.labs.metrics.service.quartz;
+
+import javax.management.MBeanServer;
+import org.jboss.labs.metrics.common.Constants;
+import org.jboss.labs.metrics.common.protocol.ScoresService;
+import org.jboss.logging.Logger;
+import org.jboss.mx.util.MBeanProxyExt;
+import org.jboss.mx.util.MBeanServerLocator;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+
+public class MetricsUpdateJob implements Job {
+
+ private static Logger log = Logger.getLogger(MetricsUpdateJob.class);
+
+ public void execute(JobExecutionContext context) throws JobExecutionException {
+
+ log.info("execute");
+
+ try {
+ MBeanServer server = MBeanServerLocator.locate();
+
+ ScoresService scoresService = (ScoresService) MBeanProxyExt.create(
+ ScoresService.class, Constants.METRICS_SCORES_SERVICE,
+ server);
+
+ scoresService.update();
+
+ } catch (Exception e) {
+ throw new JobExecutionException(e, false);
+ }
+ }
+}
More information about the jboss-svn-commits
mailing list