Gwt 石英调度器不在战争中运行

Gwt 石英调度器不在战争中运行,gwt,jboss,scheduling,quartz-scheduler,Gwt,Jboss,Scheduling,Quartz Scheduler,我正在gwt web应用程序中使用quartz调度程序。我的应用程序结构如下所示 我有两个项目。一个是gwt web应用程序客户端项目(用于ui部分),另一个是用于服务器端调用的java项目(用于数据库交互)。在客户端项目中,我放置了一个服务器项目作为参考。在运行时,我从客户端创建了一个war,并将服务器项目的jar添加到war文件夹中 现在我在服务器端使用调度器来自动完成一些任务。在本地运行时(没有war),调度器工作正常 但在jboss服务器上运行war时,调度程序没有运行 我所有与调度程序

我正在gwt web应用程序中使用quartz调度程序。我的应用程序结构如下所示

我有两个项目。一个是gwt web应用程序客户端项目(用于ui部分),另一个是用于服务器端调用的java项目(用于数据库交互)。在客户端项目中,我放置了一个服务器项目作为参考。在运行时,我从客户端创建了一个war,并将服务器项目的jar添加到war文件夹中

现在我在服务器端使用调度器来自动完成一些任务。在本地运行时(没有war),调度器工作正常

但在jboss服务器上运行war时,调度程序没有运行

我所有与调度程序相关的代码和Quartz.jar都在服务器端。在客户端项目中没有任何关于Quartz的参考。这就是问题所在吗

这是我的调度程序代码

public class QuartzJob implements Job {

public void execute(JobExecutionContext jobExecutionContext)
        throws JobExecutionException {
    JobDataMap map = jobExecutionContext.getJobDetail().getJobDataMap();
    ActivityTransactionSettingsMap map2 = (ActivityTransactionSettingsMap) map
            .get("task");

    if (map2.getAutoCompleteDate() != null) {
        WorkFlowFacade facade = new WorkFlowFacade();
        facade.completeAutoCompleteTask(map2);
        Scheduler scheduler=(Scheduler) map.get("scheduler");
        try {
            scheduler.shutdown();
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }
}
}

或者我需要只在客户端转移与调度程序相关的项目吗?? 我不知道如何解决这个问题。
请帮帮我

要让计划程序运行,应该有一些东西启动它。我不确定这个过程是如何发生的,但是您可以在servlet中编写这个调度程序

public class MySchedulerServlet extends GenericServlet {

private static final long serialVersionUID = 1477091380142883153L;

/**
 * Constant to represent property for the cron expression.
 */
private static final String CRON_EXPRESSION = "0 0 0 ? * SUN";

public void init(ServletConfig servletConfig) throws ServletException {

    super.init(servletConfig);

    // The Quartz Scheduler
    Scheduler scheduler = null;

    try {

        // Initiate a Schedule Factory
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        // Retrieve a scheduler from schedule factory
        scheduler = schedulerFactory.getScheduler();
        // Initiate JobDetail with job name, job group and
        // executable job class
        JobDetail jobDetail = new JobDetail("RetryJob", "RetryGroup", QuartzJob.class);
        // Initiate CronTrigger with its name and group name
        CronTrigger cronTrigger = new CronTrigger("cronTrigger",
                "triggerGroup");
        // setup CronExpression
        CronExpression cexp = new CronExpression(CRON_EXPRESSION);
        // Assign the CronExpression to CronTrigger
        cronTrigger.setCronExpression(cexp);
        // schedule a job with JobDetail and Trigger
        scheduler.scheduleJob(jobDetail, cronTrigger);

        // start the scheduler
        scheduler.start();

    } catch (Exception e) {
        e.printStackTrace();
    }

}

public void service(ServletRequest serveletRequest,
        ServletResponse servletResponse) throws ServletException, IOException {

}

}
在web.xml中,启动时加载sceduler。这对我有用

       <servlet>
    <servlet-name>QuartzInitializer</servlet-name>
    <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
    <init-param>
        <param-name>shutdown-on-unload</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>start-scheduler-on-load</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

        <servlet-name>MySchedulerServlet </servlet-name>
        <servlet-class>com.servlet.MySchedulerServlet </servlet-class>
    <load-on-startup>2</load-on-startup>

石英初始化器
org.quartz.ee.servlet.QuartzInitializerServlet
卸载时关机
真的
加载时启动调度程序
真的
1.
MySchedulerServlet
com.servlet.MySchedulerServlet
2.

我在本例中使用了线程

public class AutoCompleteTaskThread extends Thread {

private ActivityTransactionSettingsMap taskMap;

public AutoCompleteTaskThread(ActivityTransactionSettingsMap map) {
    this.taskMap = map;
}
@Override
public void run() {
    try {
        new AutoCompleteTaskScheduler().ScheduleJob(taskMap);
    } catch (Exception e) {          
        e.printStackTrace();
    }
}
}


如下所示,在本地计算机中,它工作正常。但对于jboss服务器,它不工作。

我使用了AutoCompleteTaskThread类的一个实例,并在此基础上调用了start方法

    private void addAutoCompleteTask(ActivityTransactionSettingsMap newTask) {
    AutoCompleteTaskThread thread = new AutoCompleteTaskThread(newTask);
    thread.start();
}

在这里,我为我想要启动新线程的任何新任务启动了一个线程。

据我所知,调度程序与您的GWT代码无关。调度程序的触发器是什么?这是触发器。Trigger Trigger=newTrigger().withIdentity(“Trigger”).startAt(tomaroDate.build();我不知道你来了。它应该从第二天开始连续运行吗?这就是你需要的吗?这只是一个示例…它将在特定日期开始。同样的问题是,谁在调用线程的start方法?
    private void addAutoCompleteTask(ActivityTransactionSettingsMap newTask) {
    AutoCompleteTaskThread thread = new AutoCompleteTaskThread(newTask);
    thread.start();
}