public class ProcessJobExecutor extends java.lang.Object implements JobExecutor
System.exit(int)
would only result in
the job's process getting killed. Other jobs and the job agent would not
be affected. Another advantage is that it makes it possible to apply
a security policy to the new process for plugins that are not trusted with
full access to the computer. See PluginDefinition.isTrusted()
.
The disadvantage is the overhead in time and memory of starting a new process.
Configuration parameter | Default value | Description |
---|---|---|
agent.executor.process.java |
Path to the java executable to use. not specified the envoronment variable
JAVA_HOME is used if it exists. Otherwise we let the operating
system find the java command.
|
|
agent.executor.process.options | -server |
Extra command line options to pass to the java executable:
java <options> -cp ... className ... .
|
Modifier and Type | Class and Description |
---|---|
static class |
ProcessJobExecutor.StreamRedirector
Used for redirecting standard output to a string.
|
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
javaBin |
private static org.slf4j.Logger |
log
Log job agent events.
|
private java.lang.String |
options |
private SignalHandler |
signalHandler |
private SignalReceiver |
signalReceiver |
Constructor and Description |
---|
ProcessJobExecutor() |
Modifier and Type | Method and Description |
---|---|
void |
close()
This method is called at when the agent is stopped or paused.
|
void |
executeJob(SessionControl sc,
Agent agent,
Job job,
JobAgentSettings settings,
Job.ExecutionTime usedSlot)
Execute the specified job.
|
void |
init(Agent agent)
Initialize the job executor.
|
private static final org.slf4j.Logger log
private java.lang.String javaBin
private java.lang.String options
private SignalReceiver signalReceiver
private SignalHandler signalHandler
public void init(Agent agent)
JobExecutor
init
in interface JobExecutor
agent
- The agentpublic void executeJob(SessionControl sc, Agent agent, Job job, JobAgentSettings settings, Job.ExecutionTime usedSlot)
JobExecutor
The job sent to this method has it's status set to Job.Status.PREPARED
.
The implementation of this method must change the status to either
Job.Status.DONE
or Job.Status.ERROR
. If the status hasn't changed
the job agent will set the status to signal an unknown error.
executeJob
in interface JobExecutor
sc
- A SessionControl
where the owner of the job is
logged in and the correct active project is setagent
- The agent that sent the request to execute the jobjob
- The job to executesettings
- The specific settings used for the plugin on this job agent
or null if no settings has been specifiedusedSlot
- The slot that was used to execut the jobpublic void close()
JobExecutor
close
in interface JobExecutor