2016-08-31 1 views
0

私はプロジェクトに取り組みましたが、問題があります。自分のタイプのオブジェクトjobdetailを自動的にインスタンス化するnewJobメソッドは、私に恩恵を与えません。私は手動でnewJobをインスタンス化して、それを私の選択したオブジェクトによってパラメータとして渡す必要がありますが、どうすればよいか分かりません。何か案は?ありがとうございました。quartz jobDetailのメソッドnewJobを手動でインスタンス化するには?

答えて

0

パラメータをジョブに直接渡すことはできません。 代わりに、使用JobDataMapであり、これはhereのようにスケジューラによって直接渡されます。例えば(Javaで):

// define the job and tie it to our DumbJob class 
JobDetail job = newJob(DumbJob.class) 
    .withIdentity("myJob", "group1") // name "myJob", group "group1" 
    .usingJobData("jobSays", "Hello World!") 
    .usingJobData("myFloatValue", 3.141f) 
    .build(); 

そして、仕事に、あなたはこのようにマップにアクセスすることができます。

public class DumbJob implements Job { 

    public DumbJob() { 
    } 

    public void execute(JobExecutionContext context) 
     throws JobExecutionException 
    { 
     JobKey key = context.getJobDetail().getKey(); 

     JobDataMap dataMap = context.getJobDetail().getJobDataMap(); 

     String jobSays = dataMap.getString("jobSays"); 
     float myFloatValue = dataMap.getFloat("myFloatValue"); 

     System.err.println("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue); 
    } 
    } 

はそれが役に立てば幸い!

+0

私はあなたの視点を見ていますが、私はquartz jobdetailのメソッドnewJobを再定義したいと思います。それが可能だ? –

+0

さて、それがシステムの仕組みです。これを変更したい場合は、ソースコードから始める必要があると思います。明らかにそれは可能ですが、おそらくそれはちょっと高価ですね。 –

+0

はい...この方法は大きすぎます。 –

関連する問題