Skip to content

Commit 6f5ac01

Browse files
committed
Merge branch 'master' of github.com:javaee-samples/javaee7-samples
2 parents 59b65ee + 81833c0 commit 6f5ac01

File tree

17 files changed

+392
-90
lines changed

17 files changed

+392
-90
lines changed

batch/scheduling/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
<dependencies>
1818
<dependency>
19-
<groupId>org.javaee7</groupId>
20-
<artifactId>util-samples</artifactId>
19+
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
20+
<artifactId>shrinkwrap-descriptors-impl-javaee</artifactId>
2121
</dependency>
2222
</dependencies>
2323
</project>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.javaee7.batch.samples.scheduling;
2+
3+
import javax.batch.runtime.BatchRuntime;
4+
import javax.ejb.Schedule;
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
import java.util.Properties;
8+
9+
/**
10+
* @author Roberto Cortez
11+
*/
12+
public abstract class AbstractTimerBatch {
13+
public static List<Long> executedBatchs = new ArrayList<>();
14+
15+
@Schedule(hour = "*", minute = "0", second = "0")
16+
public void myJob() {
17+
executedBatchs.add(BatchRuntime.getJobOperator().start("myJob", new Properties()));
18+
afterRun();
19+
}
20+
21+
protected void afterRun() {}
22+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.javaee7.batch.samples.scheduling;
2+
3+
import javax.batch.api.AbstractBatchlet;
4+
import javax.batch.runtime.BatchStatus;
5+
import javax.inject.Named;
6+
7+
/**
8+
* @author Roberto Cortez
9+
*/
10+
@Named
11+
public class MyBatchlet extends AbstractBatchlet {
12+
@Override
13+
public String process() {
14+
System.out.println("Running inside a batchlet");
15+
16+
return BatchStatus.COMPLETED.toString();
17+
}
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.javaee7.batch.samples.scheduling;
2+
3+
import javax.batch.runtime.BatchRuntime;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
import java.util.Properties;
7+
8+
/**
9+
* @author arungupta
10+
*/
11+
public class MyJob implements Runnable {
12+
public static List<Long> executedBatchs = new ArrayList<>();
13+
14+
public void run() {
15+
executedBatchs.add(BatchRuntime.getJobOperator().start("myJob", new Properties()));
16+
afterRun();
17+
}
18+
19+
protected void afterRun() {}
20+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.javaee7.batch.samples.scheduling;
2+
3+
/**
4+
* @author Roberto Cortez
5+
*/
6+
public interface MyManagedScheduledBatch {
7+
void runJob();
8+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package org.javaee7.batch.samples.scheduling;
2+
3+
import javax.annotation.Resource;
4+
import javax.batch.runtime.BatchRuntime;
5+
import javax.batch.runtime.BatchStatus;
6+
import javax.ejb.Local;
7+
import javax.ejb.Stateless;
8+
import javax.enterprise.concurrent.LastExecution;
9+
import javax.enterprise.concurrent.ManagedScheduledExecutorService;
10+
import javax.enterprise.concurrent.Trigger;
11+
import java.util.Calendar;
12+
import java.util.Date;
13+
import java.util.List;
14+
import java.util.concurrent.TimeUnit;
15+
16+
/**
17+
* @author arungupta
18+
*/
19+
@Stateless
20+
@Local(MyManagedScheduledBatch.class)
21+
public class MyManagedScheduledBatchBean implements MyManagedScheduledBatch {
22+
@Resource
23+
private ManagedScheduledExecutorService executor;
24+
25+
@Override
26+
public void runJob() {
27+
executor.schedule(createJob(), new Trigger() {
28+
29+
@Override
30+
public Date getNextRunTime(LastExecution lastExecutionInfo, Date taskScheduledTime) {
31+
if (MyJob.executedBatchs.size() >= 3) {
32+
return null;
33+
}
34+
35+
Calendar cal = Calendar.getInstance();
36+
37+
if (lastExecutionInfo == null) {
38+
cal.setTime(taskScheduledTime);
39+
} else {
40+
cal.setTime(lastExecutionInfo.getRunStart());
41+
}
42+
43+
cal.add(Calendar.SECOND, 10);
44+
return cal.getTime();
45+
}
46+
47+
@Override
48+
public boolean skipRun(LastExecution lastExecutionInfo, Date scheduledRunTime) {
49+
List<Long> executedBatchs = MyJob.executedBatchs;
50+
51+
for (Long executedBatch : executedBatchs) {
52+
if (!BatchRuntime.getJobOperator().getJobExecution(executedBatch).getBatchStatus().equals(
53+
BatchStatus.COMPLETED)) {
54+
return true;
55+
}
56+
}
57+
58+
return false;
59+
}
60+
61+
});
62+
}
63+
64+
public void runJob2() {
65+
executor.scheduleWithFixedDelay(new MyJob(), 1, 2, TimeUnit.MINUTES);
66+
}
67+
68+
protected MyJob createJob() {
69+
return new MyJob();
70+
}
71+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.javaee7.batch.samples.scheduling;
2+
3+
import javax.ejb.Singleton;
4+
import javax.ejb.Startup;
5+
6+
/**
7+
* @author arungupta
8+
*/
9+
@Startup
10+
@Singleton
11+
public class MyTimerScheduleBean extends AbstractTimerBatch {}

batch/scheduling/src/main/java/org/samples/wildfly/scheduling/batch/MyJob.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

batch/scheduling/src/main/java/org/samples/wildfly/scheduling/batch/MySingletonEJB.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

batch/scheduling/src/main/java/org/samples/wildfly/scheduling/batch/MyStatelessEJB.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)