00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030  
00031 package org.objectweb.proactive.scheduler;
00032 
00033 import java.util.Vector;
00034 
00035 import org.apache.log4j.Logger;
00036 import org.objectweb.proactive.ProActive;
00037 import org.objectweb.proactive.core.node.Node;
00038 import org.objectweb.proactive.core.util.log.Loggers;
00039 import org.objectweb.proactive.core.util.log.ProActiveLogger;
00040 
00041 
00042 public class TaskScheduler {
00043     
00044     private static Logger logger = ProActiveLogger.getLogger(Loggers.TASK_SCHEDULER);
00045     private Scheduler scheduler = null;
00046 
00047     public TaskScheduler() {
00048     }
00049 
00050     public void connectTo(String schedulerURL) throws Exception {
00051         this.scheduler = Scheduler.connectTo(schedulerURL);
00052         if (scheduler == null) {
00053             logger.error(
00054                 "Couldnt connect to scheduler. Please make sure that the deamon is running and is accessible");
00055             throw new Exception("Scheduler doesnt exist");
00056         }
00057         if (logger.isDebugEnabled()) {
00058             logger.debug("Connected to scheduler.");
00059         }
00060     }
00061 
00062     
00063     public void submit(ProActiveTask task) throws Exception {
00064         int estimatedTime = 3;
00065         if (scheduler == null) {
00066             logger.error("Not connected to scheduler");
00067             throw new Exception(
00068                 "Not connected to scheduler, please create a new one or connect to an existing one.");
00069         }
00070 
00071         Vector nodes = scheduler.getNodes(1, estimatedTime);
00072 
00073         Node node1 = (Node) nodes.get(0);
00074         String jobId = node1.getNodeInformation().getJobID();
00075 
00076         ActiveExecuter executer1 = (ActiveExecuter) ProActive.newActive(ActiveExecuter.class.getName(),
00077                 new Object[] { task }, node1);
00078 
00079         executer1.start();
00080 
00081         scheduler.del(jobId);
00082     }
00083 }