1

ジョブをスケジュールするために Quartz をテストしています。ただし、ジョブにはシリアル化できない 3 つのパラメーターが含まれています。

機能を実装する方法を示すサンプル アプリケーションを以下に作成しました。Quartz を使用してカスタムオブジェクトをパラメーターとして使用する方法を知っている人はいますか?

以下は、ジョブをスケジュールするトリガーです。問題が発生している領域についてコメントしました。

public class Trigger {

public void run() throws Exception {

    SchedulerFactory sf = new StdSchedulerFactory();
    Scheduler sched = sf.getScheduler();
    Date startTime = DateBuilder.nextGivenSecondDate(null, 15);


    JobDetail job = newJob(SimpleJob.class)
            .withIdentity("job6", "group1")
            .build();

    SimpleTrigger trigger = newTrigger()
            .withIdentity("trigger6", "group1")
            .startAt(startTime)
            .withSchedule(simpleSchedule()
                    .withIntervalInSeconds(60)
                    .repeatForever())
            .build();

    Date ft = sched.scheduleJob(job, trigger);

    TestObject testObject = new TestObject();

    // This is the part giving trouble!
    job.getJobDataMap().put(SimpleJob.test,testObject);

    sched.start();
}

}

ここに私が予定している仕事があります。

public class SimpleJob implements Job {

public static final TestObject test = null;

public SimpleJob() {

}

public void execute(JobExecutionContext context) throws JobExecutionException {

    test.saySomething();
}

}

最後に、TestObject クラスです。

public class TestObject {

public TestObject() {

}

public void saySomething() {

    System.out.println("Test Object initialized");
}

}

シリアル化不可能なオブジェクトをパラメーターとして使用できるように Quartz を取得する方法を探しているだけであることに注意してください (上記で実行されている実際のタスクやジョブについてはコメントしないでください)。

また、TestObject の Serializable インターフェイスも実装しようとしましたが、喜びはありません。

どんな助けでも大歓迎です。ありがとうございます。

4

1 に答える 1