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 }