Setup Scheduler Service on JBoss Application Server
Step1). Create a directory somewhere in your file system like "/home/username/SchedulerDemo/SchedulerDemo".
Step 2). Configure a scheduler mbean in jboss-server.xml or create a "myScheduler-service.xml" inside "/home/username/SchedulerDemo/SchedulerDemo" directory as following:
Step3). Write the Schedulable class “MySchedulable.java” inside “/home/username/SchedulerDemo/SchedulerDemo” directory as following:
InitialRepetitions=10 means in each repetition of perform() the value will be decreased by 1 and the total repetition will be 10.
MySchedulable,100 are the String and long value which we want to pass to our Schedulable class constructor while initialization.
test.MySchedulable: is the name of our Schedulable class.
java.lang.String,long: Are the argument types of the constructor of our Schedulable class.
NOW : represents the current Data/Time stamp
5000: Is the SchedulePeriod which means the perform() of our schedulable class will be invoked at every 5 seconds interval.
InitialRepetitions=10 means in each repetition of perform() the value will be decreased by 1 and the total repetition will be 10.
Step4). Make sure that your CLASSPATH and PATH is set as following before compiling the above program:
Step5). Now compile the MySchedulable.java as following and then make a Jar of it:
Step6). Now deploy the “myscheduler.jar” inside the “$PROFILE/deploy” directory. you will see the following kind of output after deploying the Schedulable Service:
Step7). Once the Scheduling is over and repetition is 0 you can restart your Scheduled task using the jmx-console “jboss.test—>service=MyScheduler”
operation “restartSchedule” similarly you can change the schedule interval and repetition etc from jmx-console.
More information about the different attribute which can be defined inside the myScheduler-service.xml file can be found in the following link: http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/Scheduling_Tasks-org.jboss.varia.scheduler.Scheduler_.html
Reference: http://middlewaremagic.com/jboss/?p=320
Step 2). Configure a scheduler mbean in jboss-server.xml or create a "myScheduler-service.xml" inside "/home/username/SchedulerDemo/SchedulerDemo" directory as following:
xml version="1.0" encoding="UTF-8"?><server> <mbean code="org.jboss.varia.scheduler.Scheduler" name="jboss.test:service=MyScheduler"> <attribute name="StartAtStartup">true</attribute> <attribute name="SchedulableClass">test.MySchedulable</attribute> <attribute name="SchedulableArguments">MySchedulable,100</attribute> <attribute name="SchedulableArgumentTypes">java.lang.String,long</attribute> <attribute name="InitialStartDate">NOW</attribute> <attribute name="SchedulePeriod">5000</attribute> <attribute name="InitialRepetitions">10</attribute> </mbean></server> package test;import java.util.Date;import org.jboss.varia.scheduler.Schedulable;import org.apache.log4j.Logger;public class MySchedulable implements Schedulable{ private static final Logger log = Logger.getLogger(MySchedulable.class); private String name; private long value; public MySchedulable(String name, long value) { this.name = name; this.value = value; log.info("nt name: " + name + ", value: " + value); } public void perform(Date now, long repetitions) { log.info("perform(), time: " + now +", repetitions: " + repetitions +", name: " + name + ", value: " + value); }}MySchedulable,100 are the String and long value which we want to pass to our Schedulable class constructor while initialization.
test.MySchedulable: is the name of our Schedulable class.
java.lang.String,long: Are the argument types of the constructor of our Schedulable class.
NOW : represents the current Data/Time stamp
5000: Is the SchedulePeriod which means the perform() of our schedulable class will be invoked at every 5 seconds interval.
InitialRepetitions=10 means in each repetition of perform() the value will be decreased by 1 and the total repetition will be 10.
Step4). Make sure that your CLASSPATH and PATH is set as following before compiling the above program:
export JAVA_HOME=/home/userone/jdk1.6.0_21export PATH=$JAVA_HOME/bin:$PATHexport JBOSS_HOME=/home/userone/jboss-5.1/jboss-asexport CLASSPATH=$JBOSS_HOME/common/lib/scheduler-plugin.jar:$JBOSS_HOME/client/log4j.jar:$CLASSPATH:.:Step5). Now compile the MySchedulable.java as following and then make a Jar of it:
javac -d . MySchedulable.javajar cvf myscheduler.jar test MySchedulable.java myScheduler-service.xmlStep6). Now deploy the “myscheduler.jar” inside the “$PROFILE/deploy” directory. you will see the following kind of output after deploying the Schedulable Service:
15:02:21,786 INFO [MySchedulable] name: MySchedulable, value: 10015:02:22,787 INFO [MySchedulable] perform(), time: Sun 15:02:22 IST 2011, repetitions: 9, name: MySchedulable, value: 10015:02:27,787 INFO [MySchedulable] perform(), time: Sun 15:02:27 IST 2011, repetitions: 8, name: MySchedulable, value: 10015:02:32,788 INFO [MySchedulable] perform(), time: Sun 15:02:32 IST 2011, repetitions: 7, name: MySchedulable, value: 10015:02:37,788 INFO [MySchedulable] perform(), time: Sun 15:02:37 IST 2011, repetitions: 6, name: MySchedulable, value: 10015:02:42,789 INFO [MySchedulable] perform(), time: Sun 15:02:42 IST 2011, repetitions: 5, name: MySchedulable, value: 10015:02:47,790 INFO [MySchedulable] perform(), time: Sun 15:02:47 IST 2011, repetitions: 4, name: MySchedulable, value: 10015:02:52,790 INFO [MySchedulable] perform(), time: Sun 15:02:52 IST 2011, repetitions: 3, name: MySchedulable, value: 10015:02:57,791 INFO [MySchedulable] perform(), time: Sun 15:02:57 IST 2011, repetitions: 2, name: MySchedulable, value: 10015:03:02,791 INFO [MySchedulable] perform(), time: Sun 15:03:02 IST 2011, repetitions: 1, name: MySchedulable, value: 10015:03:07,792 INFO [MySchedulable] perform(), time: Sun 15:03:07 IST 2011, repetitions: 0, name: MySchedulable, value: 100Step7). Once the Scheduling is over and repetition is 0 you can restart your Scheduled task using the jmx-console “jboss.test—>service=MyScheduler”
operation “restartSchedule” similarly you can change the schedule interval and repetition etc from jmx-console.
More information about the different attribute which can be defined inside the myScheduler-service.xml file can be found in the following link: http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/Scheduling_Tasks-org.jboss.varia.scheduler.Scheduler_.html
Reference: http://middlewaremagic.com/jboss/?p=320
留言
張貼留言