【发布时间】:2014-04-22 14:58:27
【问题描述】:
我已经实现了我自己的采用服务方法的石英作业类。但是,该服务似乎没有正确注入到我的作业类中,因为我在访问服务时总是遇到空指针异常。
如何在作业触发期间注入服务。
关于如何从 Job 类调用服务中的方法的任何建议
更新 1:添加了作业代码和日志消息
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobDataMap;
import com.unitrac.app.reportcentre.report.ReportService;
// Logging
import org.apache.commons.logging.LogFactory;
class ReportJob implements Job {
def reportService;
def grailsApplication;
// Logging
private static final log = LogFactory.getLog(this);
void execute(JobExecutionContext context) throws JobExecutionException {
// execute job
JobDataMap jobMapData = context.getMergedJobDataMap();
try
{
log.debug("In Report Job - executing its JOB at "
+ new Date() + " by " + context.getTrigger().getName());
String groupName = context.getTrigger().getJobKey().getName();
log.debug("group Name : " + groupName);
reportService.invokeMethod();
}
catch( Exception e )
{
log.error("Exception: $e");
}
}
}
| |
Server running. Browse to http://localhost:8080/ReportCentre
2014-04-22 14:50:00,087 [UnitracJobScheduler_Worker-1] DEBUG reportcentre.ReportJob - In Report Job - executing its JOB at Tue Apr 22 14:50:00 CAT 2014 by CCtrigger
2014-04-22 14:50:00,104 [UnitracJobScheduler_Worker-1] DEBUG reportcentre.ReportJob - group Name : DevGroup
2014-04-22 14:50:00,106 [UnitracJobScheduler_Worker-1] ERROR reportcentre.ReportJob - Exception: java.lang.NullPointerException: Cannot invoke method invokeMethod() on null object
【问题讨论】:
-
嗨 rjvargh。我们能看到作业的代码吗?
-
所以你的 Job 类中的
def myService没有注入服务?确保服务名称以小写字母开头(即使类以大写字母开头)。