2016-08-31 1 views
0

저는 프로젝트에서 일했고 문제가 있습니다. 내 타입의 객체 jobdetail을 자동으로 인스턴스화하는 newJob 메소드는 나에게 도움이되지 않는다. 내 선택의 개체에 의해 매개 변수로 전달할 수 newJob 수동으로 인스턴스화해야하지만 어떻게 해야할지 모르겠다. 어떤 아이디어? 고맙습니다.quartz jobDetail의 메소드 newJob을 수동으로 인스턴스화하는 방법은 무엇입니까?

답변

0

작업에 매개 변수를 직접 전달할 수 없습니다. 대신 할 수있는 일은 JobDataMap이며 이는 here과 같이 스케줄러에서 직접 전달합니다. (자바) 예를 들면 :

// 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

그래서 당신의 관점을 볼 수 있지만 나는 석영 jobdetail의 메서드 newJob을 재정의하고자합니다. 있을 수있다? –

+0

그게 시스템 작동 방법입니다. 이 코드를 변경하려면 소스 코드에서 시작해야한다고 생각합니다. 분명히 가능할 수도 있지만 어쩌면 너무 비싸지 않을까요? –

+0

예 ...이 방법은 너무 큽니다. –