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_21
export PATH=$JAVA_HOME/bin:$PATH
export JBOSS_HOME=/home/userone/jboss-
5.1
/jboss-as
export 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.java
jar cvf myscheduler.jar test MySchedulable.java myScheduler-service.xml
Step6). 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:
100
15
:
02
:
22
,
787
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
22
IST
2011
, repetitions:
9
, name: MySchedulable, value:
100
15
:
02
:
27
,
787
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
27
IST
2011
, repetitions:
8
, name: MySchedulable, value:
100
15
:
02
:
32
,
788
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
32
IST
2011
, repetitions:
7
, name: MySchedulable, value:
100
15
:
02
:
37
,
788
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
37
IST
2011
, repetitions:
6
, name: MySchedulable, value:
100
15
:
02
:
42
,
789
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
42
IST
2011
, repetitions:
5
, name: MySchedulable, value:
100
15
:
02
:
47
,
790
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
47
IST
2011
, repetitions:
4
, name: MySchedulable, value:
100
15
:
02
:
52
,
790
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
52
IST
2011
, repetitions:
3
, name: MySchedulable, value:
100
15
:
02
:
57
,
791
INFO [MySchedulable] perform(), time: Sun
15
:
02
:
57
IST
2011
, repetitions:
2
, name: MySchedulable, value:
100
15
:
03
:
02
,
791
INFO [MySchedulable] perform(), time: Sun
15
:
03
:
02
IST
2011
, repetitions:
1
, name: MySchedulable, value:
100
15
:
03
:
07
,
792
INFO [MySchedulable] perform(), time: Sun
15
:
03
:
07
IST
2011
, repetitions:
0
, name: MySchedulable, value:
100
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
留言
張貼留言