【发布时间】:2015-12-17 15:13:04
【问题描述】:
我正在使用 Eclipse Luna 和 WildFly 8.2.1.Final。
我有一个名为 P001_EAR 的企业应用程序项目,其中包括:
- 一个名为 P001_WAR 的
Dynamic Web Project。 - 一个名为 P001_EJB 的
EJB Project。 - 一个名为 P001_EJBClient 的
EJB Client Project。 - 一个名为 P001_SRC 的
Utility Project。
这是每个项目的引用方式:
-
P001_SRC 不引用任何其他项目。
-
P001_EJB 引用 P001_SRC 和 P001_EJBClient。
-
P001_EJBClient 引用 P001_SRC。
-
P001_WAR 引用 P001_SRC 和 P001_EJBClient。
注意:在 P001_WAR 中,每个调用该 EJB 的 EJB 方法的 EJB 都有 1 个 Business Delegate。
我需要创建一个java.util.TimerTask 类,该类将被安排运行(第一次和频率等时间表信息在数据库中)。在每次运行时,它将调用 EJB 的几个方法。这是我想出的:
public final class FirstTimerTask extends TimerTask {
@Override
public void run() {
// get EJB1
// call method of EJB1
// call another method of EJB1
}
}
我需要创建一个类来创建 1 个或多个 java.util.TimerTask 类并安排它们。它将具有java.util.Timer。任务的计划信息在我希望通过 EJB 获得的数据库中。这是我想出的:
public final class ScheduleTasksManager {
private static Timer TIMER = new TIMER();
public static void scheduleFirstTimerTask() {
TimerTask timerTask = null;
Date taskStartDate = null;
long period = -1;
// get EJB2
// call method of EJB2 to retrieve the schedule information from database and populate taskStartDate and period
timerTask = new FirstTimerTask();
TIMER.scheduleAtFixedRate(timerTask, taskStartDate, period);
}
}
我的问题是把 FirstTimerTask 和 ScheduleTasksManager 类放在哪里,这样我就没有任何循环依赖?我难住了。
我认为FirstTimerTask 需要在一个引用P001_EJBClient 的项目中,因为它需要调用EJB。
我认为ScheduleTasksManager 需要在一个引用 P001_EJBClient 的项目中,因为它需要调用 EJB。
【问题讨论】:
-
你能画一张图来说明你做了什么吗?
-
@NorbertvanNobelen 我还没有编写
FirstTimerTask和ScheduleTasksManager这两个类。这是伪代码。
标签: java eclipse jakarta-ee timer timertask