Writing an Oddjob job.
Writing a job for Oddjob is really really easy. How easy? This easy:
package org.oddjob.devguide;
public class HelloWorldJob implements Runnable {
public void run() {
System.out.println("Hello World!");
}
}
To get Oddjob to run our job we need to create configuration file:
<oddjob> <hello class="org.oddjob.devguide.HelloWorldJob"/> </oddjob>
And run it:
$ java -cp "run-oddjob.jar;examples/classes" org.oddjob.launch.Launcher -f examples/devguide/hello1.xml
Hello World!
Notice that to get our new class on the classpath we couldn't use the -jar option when running Oddjob. This is because -jar ignores any existing classpath. Anther way to load the class is to copy it to the opt/classes directory under Oddjob:
$ mkdir opt/classes/org $ mkdir opt/classes/org/oddjob $ mkdir opt/classes/org/oddjob/devguide $ cp examples/classes/org/oddjob/devguide/HelloWorldJob.class opt/classes/org/oddjob/devguide $ java -jar run-oddjob.jar -f examples/devguide/hello1.xml Hello World!
We can now also load it in Oddjob Explorer:
A Job is not much use if it's not configurable, so moving quickly on lets show you how to write a configurable job.
public class HelloPeopleJob implements Runnable {
private String[] who;
public void setWho(String[] who) {
this.who = who;
}
public String[] getWho() {
return who;
}
public void run() {
for (int i = 0; i < who.length; ++i) {
System.out.println("Hello " + who[i] + "!");
}
}
public String toString() {
return "Hello People";
}
}
A quick configuration:
<oddjob>
<hello class="org.oddjob.devguide.HelloPeopleJob">
<who>
<value value="Rod"/>
<value value="Jane"/>
<value value="Freddy"/>
</who>
</hello>
</oddjob>
Copy the class
$ cp examples/classes/org/oddjob/devguide/HelloPeopleJob.class opt/classes/org/oddjob/devguide
And lets fire it up:
So lets take a moment to reflect on what we've got:
Not bad for a dozen lines of code.