[jboss-svn-commits] JBL Code SVN: r15232 - in labs/jbosslabs/trunk/stats-server/sources/metrics: common/src/java/org/jboss/labs/metrics/common/protocol and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Sep 19 06:52:50 EDT 2007


Author: wrzep
Date: 2007-09-19 06:52:50 -0400 (Wed, 19 Sep 2007)
New Revision: 15232

Added:
   labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/
   labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJob.java
Modified:
   labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/Constants.java
   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/project.xml
   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
Log:
JBLAB-891
quartz


Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/Constants.java
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/Constants.java	2007-09-19 10:37:22 UTC (rev 15231)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/Constants.java	2007-09-19 10:52:50 UTC (rev 15232)
@@ -31,7 +31,8 @@
 
 	public static final String METICS_SERVICE_ADDRESS 	  = "service:jmx:rmi://localhost";
 
-	public static final String DAILY_SCORES_UPDATER	= "DailyScoresUpdater/local";
+	public static final String DAILY_SCORES_UPDATER	= "metics:service=UpdaterService";
+													//"DailyScoresUpdater/local";
 
 	public static final String DB_SERVICE 			= "ScoresDBService/local";
 

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 10:37:22 UTC (rev 15231)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/ScoresService.java	2007-09-19 10:52:50 UTC (rev 15232)
@@ -24,13 +24,17 @@
 
 import java.io.Serializable;
 
+import org.jboss.labs.metrics.common.protocol.conf.Configuration;
 
+
 /**
 * @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com)
 */
 
 public interface ScoresService extends Serializable {
 	
+	public void init(Configuration conf);
+	
 	public void ping();
 	
 	public void save();

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 10:37:22 UTC (rev 15231)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/protocol/conf/ScoresUpdater.java	2007-09-19 10:52:50 UTC (rev 15232)
@@ -24,13 +24,12 @@
 
 import java.io.Serializable;
 
-import org.jboss.labs.metrics.common.protocol.ScoresService;
-
 /**
 * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
 */
 public interface ScoresUpdater extends Serializable {
 	
-	public void init(ScoresService scoresService, UpdatesConf conf);
+	// Life cycle methods
 	
+	public void start () throws Exception;
 }
\ No newline at end of file

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 10:37:22 UTC (rev 15231)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/common/src/java/org/jboss/labs/metrics/common/tools/Tools.java	2007-09-19 10:52:50 UTC (rev 15232)
@@ -117,9 +117,6 @@
 		InitialContext ic = new InitialContext(properties);
 		    
 		ScoresService service = (ScoresService)ic.lookup("JMMService");
-		
-		service.ping();
-		log.debug("Ping to ScoresService successful.");
 	
 		return service;
 	}

Modified: labs/jbosslabs/trunk/stats-server/sources/metrics/service/project.xml
===================================================================
--- labs/jbosslabs/trunk/stats-server/sources/metrics/service/project.xml	2007-09-19 10:37:22 UTC (rev 15231)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/project.xml	2007-09-19 10:52:50 UTC (rev 15232)
@@ -53,6 +53,12 @@
 				<ejb.bundle>true</ejb.bundle>
 			</properties>
 		</dependency>
+		
+		<dependency>
+	    		<groupId>quartz</groupId>
+	    		<artifactId>quartz</artifactId>
+	    		<version>1.5.2</version>
+	    	</dependency>
 
 		<!-- JBoss EJB3 dependencies -->
 
@@ -87,8 +93,13 @@
 			<artifactId>jbossall-client</artifactId>
 			<version>3.2.3</version>
 		</dependency>
-
 		<dependency>
+					<groupId>jboss</groupId>
+					<artifactId>jboss-jmx</artifactId>
+					<version>4.0.2</version>
+				</dependency>
+		
+		<dependency>
 			<groupId>jaxb</groupId>
 			<artifactId>JAXB2</artifactId>
 			<version>2.0</version>

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 10:37:22 UTC (rev 15231)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresDailyUpdater.java	2007-09-19 10:52:50 UTC (rev 15232)
@@ -22,97 +22,67 @@
 
 package org.jboss.labs.metrics.service.impl;
 
-import java.util.Calendar;
-import javax.annotation.Resource;
-import javax.ejb.Local;
-import javax.ejb.Stateless;
-import javax.ejb.Timeout;
-import javax.ejb.Timer;
-import javax.ejb.TransactionAttribute;
-import javax.ejb.TransactionAttributeType;
+import java.util.Date;
 
-import org.jboss.annotation.ejb.LocalBinding;
-import org.jboss.annotation.ejb.TransactionTimeout;
-
+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.common.protocol.conf.UpdatesConf;
-
+import org.jboss.labs.metrics.service.quartz.MetricsInitJob;
 import org.jboss.logging.Logger;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.Trigger;
+import org.quartz.TriggerUtils;
+import org.quartz.impl.StdSchedulerFactory;
 
 /**
 * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
 */
 
- at Stateless
+/*@Stateful
 @Local(ScoresUpdater.class)
- at LocalBinding(jndiBinding=Constants.DAILY_SCORES_UPDATER)
+ at LocalBinding(jndiBinding=Constants.DAILY_SCORES_UPDATER)*/
+
+ at Service(objectName=Constants.DAILY_SCORES_UPDATER)
+ at Management(ScoresUpdater.class)
 public class ScoresDailyUpdater implements ScoresUpdater {
 
 
 	private static final long serialVersionUID = 2272792275281319486L;
-
-	@Resource private javax.ejb.TimerService timerService;
 	
 	private Logger log = Logger.getLogger(ScoresDailyUpdater.class);
 	
-	public void init(ScoresService scoresService, UpdatesConf conf) {
 	
+	public void start () throws Exception {
+	
 		log.info("ScoresDailyUpdater initialization");
 		
-		clearSchedule();
-		
-		scheduleUpdates(scoresService, conf);
+		try {
+			scheduleUpdates();
+		} catch (SchedulerException e) {
+			log.warn("Quartz initialization failed", e);
+		}
 	}
-
-	@Timeout
-	@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
-	@TransactionTimeout(value=3000)
-    public void update(Timer timer) {
-      
-       try {
-    	   		log.info("Updating scores...");
-           
-    	   		ScoresService scoresService = (ScoresService) timer.getInfo();
-    	   
-    	   		scoresService.save();
-    	   
-       } catch (Exception e) {
-    	   
-    	   		log.warn("Unable to update scores.\nCause: " + e.getMessage());
-    	   		log.debug("Exception while updating scores:", e);
-       }
-    }
 	
-	private void clearSchedule() {
-    	
-        for (Object obj : timerService.getTimers( )) {
-         
-            Timer timer = (Timer) obj;
-            timer.cancel( );
-        }
-    }
+	private void scheduleUpdates() throws SchedulerException {
 	
-	private void scheduleUpdates(ScoresService scoresService, UpdatesConf conf) {
+		 // Grab the Scheduler instance from the Factory 
+        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
+
+        // and start it off
+        scheduler.start();
+        
+        JobDetail jobDetail = new JobDetail("metricsInitJob",
+                							null,
+                							MetricsInitJob.class);
 	
-		if (conf.getFirstUpdate() > 0) {
-		
-			long firstUpdateMills = conf.getFirstUpdate() * 60 * 1000;
-			timerService.createTimer(firstUpdateMills, scoresService);
-		}
-		
-		long updateIntervalMills = conf.getUpdateInterval() * 60 * 1000;
-		
-		Calendar cal = Calendar.getInstance();
-		cal.set(Calendar.HOUR_OF_DAY, conf.getUpdateStartHour());
-		cal.set(Calendar.MINUTE, conf.getUpdateStartMinute());
-		
-		if (cal.before(Calendar.getInstance())) {
-			cal.add(Calendar.DATE, 1);
-		}
-		
-		timerService.createTimer(cal.getTime(),
-										updateIntervalMills, scoresService);
+        Trigger trigger = TriggerUtils.makeImmediateTrigger("metricsInitTrigger", 0, 60*1000);
+        trigger.setStartTime(new Date());
+        trigger.setName("metricsInitTrigger");
+
+        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 10:37:22 UTC (rev 15231)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/impl/ScoresServiceImpl.java	2007-09-19 10:52:50 UTC (rev 15232)
@@ -59,34 +59,25 @@
 	private Logger log = Logger.getLogger(this.getClass());;
 
 	private Properties projectsServiceProperties;
-	private List<String> projectIds;
-	
-	protected void init(Configuration conf)	throws ScoresException {
 		
+	public void init(Configuration conf) {
+		
 		log.info("ScoresService initialization");
 		
-		
-	log.info("Starting...");
-		
-		//System.setProperty("java.security.policy", "client.policy");
 		if (System.getSecurityManager() == null) {
 			System.setSecurityManager(new RMISecurityManager()); 
 		}
 		
 		projectsServiceProperties = conf.getProjectsServiceProperties();
 		
-		projectIds = conf.getProjectIds();
-		
 		MetricsProjectsService service = ProjectTools.getProjectsService(projectsServiceProperties);
 		log.info("Service: " + service);
 		
 		service.ping();
-		
-		//ScoresUpdater updater = Tools.getScoresUpdater();
-		//updater.init(this, conf.getUpdateConf());
 	}
 
 	public void save() {
+		
 		// TODOs
 	}
 
@@ -116,14 +107,11 @@
 	
 	public void start() throws Exception {
 		
-		log.info("Metrics service started.");
+		log.info("Connector server for Metrics started.");
 		
 		Tools.startJMXService(Constants.METICS_SERVICE_ADDRESS);
 		
-		init(new DefaultConfiguration());
-		
-		
-		log.info("Connector server for Metrics started.");
+		log.info("Metrics service started.");
 	}
 
 	public void stop() throws Exception {

Added: 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	                        (rev 0)
+++ labs/jbosslabs/trunk/stats-server/sources/metrics/service/src/java/org/jboss/labs/metrics/service/quartz/MetricsInitJob.java	2007-09-19 10:52:50 UTC (rev 15232)
@@ -0,0 +1,58 @@
+/*
+ * 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 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;
+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;
+
+public class MetricsInitJob implements Job {
+
+	private static Logger log = Logger.getLogger(MetricsInitJob.class);
+
+	public void execute(JobExecutionContext context) {
+
+		log.info("execute");
+		
+		try {
+			MBeanServer server = MBeanServerLocator.locate();
+
+			ScoresService scoresService = (ScoresService) MBeanProxyExt.create(
+					ScoresService.class, Constants.METRICS_SCORES_SERVICE,
+					server);
+
+			scoresService.init(new DefaultConfiguration());
+			
+		} catch (MalformedObjectNameException e) {
+			log.warn("Unable to get ScoresService", e);
+		}
+	}
+}




More information about the jboss-svn-commits mailing list