[jboss-svn-commits] JBL Code SVN: r6983 - in labs/jbosslabs/trunk/portal-extensions/forge-status: . src src/app src/app/META-INF src/java/org/jboss/forge/status/common src/java/org/jboss/forge/status/common/protocol src/java/org/jboss/forge/status/portlet/conf src/java/org/jboss/forge/status/service/impl

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 20 16:57:07 EDT 2006


Author: wrzep
Date: 2006-10-20 16:57:00 -0400 (Fri, 20 Oct 2006)
New Revision: 6983

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/app/
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/app/META-INF/
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/app/META-INF/jboss-service.xml
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ScoresDailyUpdater.java
Removed:
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-status/maven.xml
   labs/jbosslabs/trunk/portal-extensions/forge-status/project.properties
   labs/jbosslabs/trunk/portal-extensions/forge-status/project.xml
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/protocol/ScoresService.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ServiceScoresManager.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java
Log:
http://jira.jboss.com/jira/browse/JBLAB-781 (Standalone JMM service)

Managed to get remote calls working using MBeans.

Pawel


Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/maven.xml	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/maven.xml	2006-10-20 20:57:00 UTC (rev 6983)
@@ -22,6 +22,10 @@
 
 		<attainGoal name="jar" />
 		<ant:move tofile="target/${status.common.final.name}" file="target/${maven.final.name}.jar" />
+		
+		<ant:copy toDir="${maven.repo.local}/jboss-common/jars/" file="target/${status.common.final.name}" overwrite="true">
+        </ant:copy>
+
 	</goal>
     
 	<goal name="deploy">	
@@ -42,14 +46,30 @@
 		                  file="${ext.root.dir}/configuration/to-copy/server/all/deploy/JBLabs-ds.xml" />
 	</goal>
 
+	<goal name="service-build">
+	  	<ant:copy todir="target/${jmm.service.sar}" file="target/${status.common.final.name}" />
+
+		<ant:copy todir="target/${jmm.service.sar}">
+		       <ant:fileset dir="src/app" flatten="true" overwrite="true">
+		          <ant:filename name="**" />
+		       </ant:fileset>
+		 </ant:copy>
+	</goal>
+
 	<goal name="service-deploy">
-	  	<ant:copy todir="${jmm.service.deploy.dir}" file="target/${status.common.final.name}" />
-		<ant:copy todir="${jmm.service.deploy.dir}" file="target/${status.service.final.name}" />
+        	<ant:delete file="${local.deploy.dir}/${status.service.final.name}" />
+
+		<ant:copy todir="${jmm.service.deploy.dir}">
+		    <ant:fileset dir="target/${jmm.service.sar}" flatten="true" overwrite="true">
+		          <ant:filename name="**" />
+		    </ant:fileset>
+		</ant:copy>
+
 		<ant:copy todir="${jmm.service.deploy.dir}" file="${ext.root.dir}/forge-common/target/forge-common-1.0.jar" />
 	</goal>
 
 	<goal name="service-clean">
-	  	<ant:delete file="${jmm.service.deploy.dir}/${status.common.final.name}" />
+	  	<ant:delete dir="${jmm.service.deploy.dir}/${jmm.service.sar}" />
 		<ant:delete file="${jmm.service.deploy.dir}/${status.service.final.name}" />
 		<ant:delete file="${jmm.service.deploy.dir}/forge-common-1.0.jar" />
 	</goal>
@@ -57,6 +77,7 @@
 	<goal name="service-all">
 	        <attainGoal name="service-clean" />
 		<attainGoal name="build" />
+		<attainGoal name="service-build" />
 		<attainGoal name="service-deploy" />
 	</goal>
 

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/project.properties	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/project.properties	2006-10-20 20:57:00 UTC (rev 6983)
@@ -3,11 +3,12 @@
 maven.war.src=${basedir}/src/web
 
 maven.ejb.includes=**/service/**,**/META-INF/**
-maven.jar.excludes=**/StatusPortlet.class,**/service/**
+maven.jar.excludes=**/StatusPortlet.class,**/service/**,**/persistence.xml
 maven.war.classes.includes=**/StatusPortlet.class
 
 status.service.final.name=status-service.ejb3
 status.common.final.name=status-common.jar
 
+jmm.service.sar=jmm-service.sar/
 jmm.service.server.dir=/home/pawel/moje/JBoss/as2
 jmm.service.deploy.dir=${jmm.service.server.dir}/server/all/deploy
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/project.xml	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/project.xml	2006-10-20 20:57:00 UTC (rev 6983)
@@ -26,8 +26,18 @@
                 <ejb.manifest.classpath>true</ejb.manifest.classpath>
             </properties>
 	</dependency>
-
+<!--
 	<dependency>
+	    <groupId>jboss-forge</groupId>
+	    <artifactId>status-common</artifactId>
+	    <jar>status-common.jar</jar>
+	    <properties>
+                <ejb.manifest.classpath>true</ejb.manifest.classpath>
+                <war.manifest.classpath>true</war.manifest.classpath>
+            </properties>
+	</dependency>
+-->
+	<dependency>
 	    <groupId>aslibs</groupId>
 	    <artifactId>javax.servlet</artifactId>
 	    <version>1.0</version>
@@ -98,6 +108,11 @@
 		<version></version>
 		<jar>jboss-annotations-ejb3.jar</jar>
         </dependency>
+	<dependency>
+		<groupId>jboss</groupId>
+		<artifactId>jbossall-client</artifactId>
+		<version>3.2.3</version>
+        </dependency>
 
 	<dependency>
 		<groupId>jaxb</groupId>

Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/app/META-INF/jboss-service.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/app/META-INF/jboss-service.xml	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/app/META-INF/jboss-service.xml	2006-10-20 20:57:00 UTC (rev 6983)
@@ -0,0 +1,22 @@
+ <!-- Proxy factory for MyService that will call invoke(Invocation mi) on the target service -->
+   <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
+      name="jboss.jmx:type=adaptor,name=JMMService,protocol=jrmp,service=proxyFactory">
+      <!-- Use the standard JRMPInvoker from conf/jboss-service.xxml -->
+      <depends optional-attribute-name="InvokerName">jboss:service=invoker,type=jrmp</depends>
+      <!-- The target MBean -->
+      <depends optional-attribute-name="TargetName">jmm:service=JMMService</depends>
+      <!-- Where to bind the proxy factory -->
+      <attribute name="JndiName">JMMService</attribute>
+      <!-- Invoke invoke(Invocation mi) operation instead of the target method -->
+      <attribute name="InvokeTargetMethod">false</attribute>
+      <!-- MyService interface -->
+      <attribute name="ExportedInterfaces">org.jboss.forge.status.common.protocol.ScoresService</attribute>
+      <attribute name="ClientInterceptors">
+          <interceptors>
+             <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
+             <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
+             <interceptor>org.jboss.jmx.connector.invoker.client.InvokerAdaptorClientInterceptor</interceptor>
+             <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
+          </interceptors>
+      </attribute>
+   </mbean>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java	2006-10-20 20:57:00 UTC (rev 6983)
@@ -7,6 +7,10 @@
 	
 	public static final int MAX_ATTEMPTS 				= 10;
 	
+	public static final String JMM_SCORES_SERVICE = "jmm:service=JMMService";
+	
+	public static final String JMM_SERVICE_ADDRESS 	  = "service:jmx:rmi://localhost:5789";
+	
 	public static final String STATUS_LOCAL_SERVICE	= "ScoresService/local"; 
 														  //"java:/ScoresService/local";
 	public static final String STATUS_REMOTE_SERVICE 	= "ScoresService/remote";

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/protocol/ScoresService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/protocol/ScoresService.java	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/protocol/ScoresService.java	2006-10-20 20:57:00 UTC (rev 6983)
@@ -26,25 +26,26 @@
 import java.util.Calendar;
 import java.util.List;
 
+import javax.ejb.Local;
 import javax.ejb.Remote;
 
 import org.jboss.forge.common.projects.Projects;
 import org.jboss.forge.status.common.exceptions.GetScoresException;
+import org.jboss.forge.status.common.exceptions.ScoresException;
 import org.jboss.forge.status.common.exceptions.ScoresSaveException;
 import org.jboss.forge.status.common.protocol.conf.PluginConf;
 import org.jboss.forge.status.common.protocol.conf.PluginsValues;
-import org.jboss.forge.status.common.protocol.conf.ScoresFactory;
 
 /**
 * @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com)
 */
- at Remote
+//@Local
+//@Remote
 public interface ScoresService extends Serializable {
 	
 	public void init(String portalName, ScoresManager scoresManager,
-			ScoresRepositoryManager repositoryManager,
-			ScoresFactory scoresFactory, List<PluginConf> pluginsConf,
-			Projects projects);
+					List<PluginConf> pluginsConf, Projects projects)
+												throws ScoresException;
 	
 	public void save() throws ScoresSaveException;	
 	
@@ -59,4 +60,12 @@
 	public long getValue(String pluginId, String projectId,
 						  Calendar start, Calendar end)
 												throws GetScoresException;
+	
+	public void ping();
+	
+	public Object invoke(org.jboss.invocation.Invocation mi) throws Exception;
+	
+	//	 Life cycle method
+	public void start () throws Exception;
+	public void stop () throws Exception;
 }
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ScoresDailyUpdater.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ScoresDailyUpdater.java	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ScoresDailyUpdater.java	2006-10-20 20:57:00 UTC (rev 6983)
@@ -0,0 +1,110 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., 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.forge.status.portlet.conf;
+
+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 org.jboss.annotation.ejb.LocalBinding;
+
+import org.jboss.forge.status.common.Constants;
+import org.jboss.forge.status.common.exceptions.ScoresSaveException;
+import org.jboss.forge.status.common.protocol.ScoresManager;
+import org.jboss.forge.status.common.protocol.ScoresUpdater;
+import org.jboss.forge.status.common.protocol.conf.ServiceConf;
+
+import org.jboss.logging.Logger;
+
+/**
+* @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
+*/
+
+ at Stateless
+ at Local(ScoresUpdater.class)
+ at LocalBinding(jndiBinding=Constants.DAILY_SCORES_UPDATER)
+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(ScoresManager scoresManager, ServiceConf conf) {
+	
+		 log.info("INIT ScoresManager: " + scoresManager);
+		
+		clearSchedule();
+		
+		scheduleUpdates(scoresManager, conf);
+	}
+
+	@Timeout
+    public void update(Timer timer) {
+		
+       log.info("Updating scores...");
+       
+       ScoresManager scoresManager = (ScoresManager) timer.getInfo();
+      
+       try {
+    	   		scoresManager.save();
+    	   
+       } catch (ScoresSaveException e) {
+    	   
+    	   		log.warn("Unable to update scores.\nCause: " + e.getMessage());
+       }
+    }
+	
+	private void clearSchedule() {
+    	
+        for (Object obj : timerService.getTimers( )) {
+         
+            Timer timer = (Timer) obj;
+            timer.cancel( );
+        }
+    }
+	
+	private void scheduleUpdates(ScoresManager scoresManager, ServiceConf conf) {
+	
+		if (conf.getFirstUpdate() > 0) {
+		
+			long firstUpdateMills = conf.getFirstUpdate() * 60 * 1000;
+			timerService.createTimer(firstUpdateMills, scoresManager);
+		}
+		
+		long updateIntervalMills = conf.getUpdateInterval() * 60 * 1000;
+		
+		Calendar cal = Calendar.getInstance();
+		cal.add(Calendar.DATE, 1);
+		cal.set(Calendar.HOUR_OF_DAY, conf.getUpdateStartHour());
+		cal.set(Calendar.MINUTE, conf.getUpdateStartMinute());
+		
+		timerService.createTimer(cal.getTime(),
+										updateIntervalMills, scoresManager);
+	}
+}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ServiceScoresManager.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ServiceScoresManager.java	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/portlet/conf/ServiceScoresManager.java	2006-10-20 20:57:00 UTC (rev 6983)
@@ -33,26 +33,25 @@
 import javax.rmi.PortableRemoteObject;
 
 import org.jboss.forge.common.projects.Projects;
+
 import org.jboss.forge.status.common.Constants;
 import org.jboss.forge.status.common.exceptions.GetScoresException;
 import org.jboss.forge.status.common.exceptions.ScoresException;
 import org.jboss.forge.status.common.exceptions.ScoresSaveException;
+
 import org.jboss.forge.status.common.protocol.ScoresManager;
-import org.jboss.forge.status.common.protocol.ScoresRepositoryManager;
 import org.jboss.forge.status.common.protocol.ScoresService;
-import org.jboss.forge.status.common.protocol.ScoresServiceLocal;
-import org.jboss.forge.status.common.protocol.ScoresServiceRemote;
 import org.jboss.forge.status.common.protocol.ScoresUpdater;
 import org.jboss.forge.status.common.protocol.conf.PluginConf;
 import org.jboss.forge.status.common.protocol.conf.PluginsValues;
-import org.jboss.forge.status.common.protocol.conf.ScoresFactory;
 import org.jboss.forge.status.common.protocol.conf.ServiceConf;
+
 import org.jboss.forge.status.common.tools.Tools;
-import org.jboss.forge.status.service.impl.db.DBScoresRepositoryManager;
-import org.jboss.forge.status.service.impl.db.protocol.DBScoresFactory;
 
 import org.jboss.logging.Logger;
 
+
+
 /**
 * @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com)
 */
@@ -79,18 +78,14 @@
 		
 		log = Logger.getLogger(this.getClass());
 		
-		try {
-			ScoresRepositoryManager repositoryManager = 
-											new DBScoresRepositoryManager();
-			ScoresFactory scoresFactory = new DBScoresFactory();
-			
+		try {			
 			service = getService();
-			service.init(portalName, this, repositoryManager, scoresFactory,
-										pluginsConf, projects);
 		} catch (NamingException e) {
 			throw new ScoresException(e);
 		}
 		
+		service.init(portalName, this, pluginsConf, projects);
+		
 		sheduleUpdates(serviceConf);
 	}
 	
@@ -220,47 +215,21 @@
 	}
 	
 	private ScoresService getService() throws NamingException {
-		/*
-		String url = "http://localhost:8080/jmm-service";
-
-	    HessianProxyFactory factory = new HessianProxyFactory();
-	    ScoresService service;
-		try {
-			service = (ScoresService) factory.create(ScoresService.class, url);
-		} catch (MalformedURLException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-			return null;
-		}
 		
-	    return service;
-	    */
+		//RemoteMBeanServer lConnector = new RMIClientConnectorImpl("server-name" );
 		
-		log.info("isRemote: " + isRemote);
-		log.info("properties:" + properties);
+		log.info("InitialContext");
+		InitialContext ic = new InitialContext(properties);
+        
+		log.info("lookup");
+		ScoresService service = (ScoresService)ic.lookup("JMMService");
 		
-		Context context = null;
-		if (isRemote) {
-			context = new InitialContext(properties);
-		} else {
-			context = new InitialContext();
-		}
-			
-		//	Perform look up using JNDI name of ejb object
-		String serviceBinding = Constants.STATUS_REMOTE_SERVICE;
-		/*	(isRemote ? Constants.STATUS_REMOTE_SERVICE :
-						Constants.STATUS_LOCAL_SERVICE);*/
-		
-		Object ref = context.lookup(serviceBinding);
-		
-		// Narrow the reference of the object returned by lookup() method
-		ScoresService service = 
-			(ScoresService) PortableRemoteObject.narrow( ref, ScoresService.class); 
-								//	(isRemote ? ScoresServiceRemote.class :
-									//			ScoresServiceLocal.class));
-		
+		log.info("ping");
+		log.info("myService: " + service.toString());
+		service.ping();
+		 
+		log.info("return");
 		return service;
-		
 	}
 	
 	private void sheduleUpdates(ServiceConf conf) {
@@ -273,6 +242,7 @@
 		}
 	}
 
+	//TODO move updater handling to ScoresService
 	private ScoresUpdater getScoresUpdater() {
 				
 		ScoresUpdater updater;

Deleted: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java	2006-10-20 20:57:00 UTC (rev 6983)
@@ -1,110 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., 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.forge.status.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 org.jboss.annotation.ejb.LocalBinding;
-
-import org.jboss.forge.status.common.Constants;
-import org.jboss.forge.status.common.exceptions.ScoresSaveException;
-import org.jboss.forge.status.common.protocol.ScoresManager;
-import org.jboss.forge.status.common.protocol.ScoresUpdater;
-import org.jboss.forge.status.common.protocol.conf.ServiceConf;
-
-import org.jboss.logging.Logger;
-
-/**
-* @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
-*/
-
- at Stateless
- at Local(ScoresUpdater.class)
- at LocalBinding(jndiBinding=Constants.DAILY_SCORES_UPDATER)
-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(ScoresManager scoresManager, ServiceConf conf) {
-	
-		 log.info("INIT ScoresManager: " + scoresManager);
-		
-		clearSchedule();
-		
-		scheduleUpdates(scoresManager, conf);
-	}
-
-	@Timeout
-    public void update(Timer timer) {
-		
-       log.info("Updating scores...");
-       
-       ScoresManager scoresManager = (ScoresManager) timer.getInfo();
-      
-       try {
-    	   		scoresManager.save();
-    	   
-       } catch (ScoresSaveException e) {
-    	   
-    	   		log.warn("Unable to update scores.\nCause: " + e.getMessage());
-       }
-    }
-	
-	private void clearSchedule() {
-    	
-        for (Object obj : timerService.getTimers( )) {
-         
-            Timer timer = (Timer) obj;
-            timer.cancel( );
-        }
-    }
-	
-	private void scheduleUpdates(ScoresManager scoresManager, ServiceConf conf) {
-	
-		if (conf.getFirstUpdate() > 0) {
-		
-			long firstUpdateMills = conf.getFirstUpdate() * 60 * 1000;
-			timerService.createTimer(firstUpdateMills, scoresManager);
-		}
-		
-		long updateIntervalMills = conf.getUpdateInterval() * 60 * 1000;
-		
-		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.DATE, 1);
-		cal.set(Calendar.HOUR_OF_DAY, conf.getUpdateStartHour());
-		cal.set(Calendar.MINUTE, conf.getUpdateStartMinute());
-		
-		timerService.createTimer(cal.getTime(),
-										updateIntervalMills, scoresManager);
-	}
-}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java	2006-10-20 20:48:14 UTC (rev 6982)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java	2006-10-20 20:57:00 UTC (rev 6983)
@@ -24,46 +24,58 @@
 
 import java.util.Calendar;
 import java.util.List;
+import java.util.Map;
 
-import javax.ejb.Local;
 import javax.ejb.Remote;
 import javax.ejb.TransactionAttribute;
 import javax.ejb.TransactionAttributeType;
-import org.jboss.annotation.ejb.LocalBinding;
-import org.jboss.annotation.ejb.RemoteBinding;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.naming.NamingException;
+
+import org.jboss.annotation.ejb.Management;
 import org.jboss.annotation.ejb.Service;
 import org.jboss.forge.common.projects.Projects;
 
 import org.jboss.forge.status.common.Constants;
 import org.jboss.forge.status.common.exceptions.GetScoresException;
+import org.jboss.forge.status.common.exceptions.ScoresException;
 import org.jboss.forge.status.common.exceptions.ScoresSaveException;
 import org.jboss.forge.status.common.protocol.ScoresManager;
 import org.jboss.forge.status.common.protocol.ScoresRepositoryManager;
 import org.jboss.forge.status.common.protocol.ScoresService;
-import org.jboss.forge.status.common.protocol.ScoresServiceLocal;
-import org.jboss.forge.status.common.protocol.ScoresServiceRemote;
 import org.jboss.forge.status.common.protocol.conf.PluginConf;
 import org.jboss.forge.status.common.protocol.conf.PluginsValues;
 import org.jboss.forge.status.common.protocol.conf.ScoresFactory;
 import org.jboss.forge.status.common.tools.Plugins;
+import org.jboss.forge.status.service.impl.db.DBScoresRepositoryManager;
+import org.jboss.forge.status.service.impl.db.protocol.DBScoresFactory;
 
+import org.jboss.invocation.Invocation;
+
 import org.jboss.logging.Logger;
+import org.jboss.mx.util.MBeanServerLocator;
 
 /**
 * @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com)
 */
 
- at Service
-//@Local(ScoresServiceLocal.class)
+ at Service(objectName=Constants.JMM_SCORES_SERVICE)
+ at Management(ScoresService.class)
+
+//@Local(ScoresService.class)
 //@LocalBinding(jndiBinding=Constants.STATUS_LOCAL_SERVICE)
 @Remote(ScoresService.class)
- at RemoteBinding(jndiBinding=Constants.STATUS_REMOTE_SERVICE)
+//@RemoteBinding(jndiBinding=Constants.STATUS_REMOTE_SERVICE)
 public class ScoresServiceImpl implements ScoresService {
 
 
 	private static final long serialVersionUID = 2183914957075021104L;
 
-	private Logger log;
+	private Logger log = Logger.getLogger(this.getClass());;
 
 	private String portalName;
 	
@@ -76,21 +88,23 @@
 	
 	
 	public void init(String portalName, ScoresManager scoresManager,
-								ScoresRepositoryManager repositoryManager,
-								ScoresFactory scoresFactory,
-								List<PluginConf> pluginsConf,
-								Projects projects) {
+						List<PluginConf> pluginsConf, Projects projects)
+													throws ScoresException {
 		
+		log.info("INIT");
+		
 		this.portalName = portalName;
-		
 		this.scoresManager = scoresManager;
-		this.repositoryManager = repositoryManager;
-		this.scoresFactory = scoresFactory;
-	
 		this.pluginsConf = pluginsConf;
 		this.projects = projects;
 		
-		log = Logger.getLogger(this.getClass());
+		try {
+			repositoryManager = new DBScoresRepositoryManager();
+		} catch (NamingException e) {
+			throw new ScoresException("DB service initialization failed." +
+							"\nCause: " + e.getMessage());
+		}
+		scoresFactory = new DBScoresFactory();
 	}
 	
 	/**
@@ -164,4 +178,59 @@
 
 		return repositoryManager.getValue(pluginId, projectId, start, end);
 	}
+
+	public void start() throws Exception {
+		
+		log.info("JMM service started.");
+		
+		startJMXService();
+		
+		log.info("Connector server for JMM started.");
+	}
+
+	public void stop() throws Exception {
+		
+		log.info("JMM service stopped");
+	}
+	
+	//TODO move to Tools
+	private static void startJMXService() {
+		
+		try {
+			//		 The address of the connector
+			JMXServiceURL address = new JMXServiceURL(Constants.JMM_SERVICE_ADDRESS);
+			
+			//		 The environment map, null in this case
+			Map<String,Object> environment = null;
+
+			JMXConnectorServer cntorServer = JMXConnectorServerFactory.newJMXConnectorServer(address, environment, null);
+
+			//		 The MBeanServer to which the JMXConnectorServer will be registered in
+			MBeanServer server = MBeanServerLocator.locate();
+
+			//		 Register the JMXConnectorServer in the MBeanServer
+			ObjectName cntorServerName = ObjectName.getInstance("connectors:protocol=rmi");
+			server.registerMBean(cntorServer, cntorServerName);
+
+			//		 Start the JMXConnectorServer
+			cntorServer.start();
+			
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		
+	}
+
+	public void ping() {
+		
+		log.info("PING!");
+	}
+
+	public Object invoke(Invocation mi) throws Exception {
+		
+		 System.out.println("MyService.invoke> method=" + mi.getMethod().getName());
+	      return "invoke";
+	}
 }




More information about the jboss-svn-commits mailing list