grails - 服务未正确注入(inject)到quartz作业类中使用grails 2.3.6的quartz调度程序插件(v1.0.1)

标签 grails quartz-scheduler

我已经实现了自己的 quartz 作业类,它采用服务方法。但是,该服务似乎没有正确注入(inject)到我的作业类中,因为我在访问服务时总是遇到空指针异常。

如何在作业触发期间注入(inject)服务。

有关如何从 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 

最佳答案

物有所值。我尝试了上面的所有建议,但它对我不起作用。我最终决定从 Grails ApplicationContext 手动注入(inject)服务。

def ss = Holders.grailsApplication.mainContext.getBean(SampleService.class)

这比使用 new() 创建服务更好

关于grails - 服务未正确注入(inject)到quartz作业类中使用grails 2.3.6的quartz调度程序插件(v1.0.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23223147/

相关文章:

grails - grails Controller 简单问题

java - quartz 调度程序 : Pass database values from one class to another

java - quartz ,调度过程始终存在

java - 如何杀死 quartz 预定线程?

java - quartz - 具有初始延迟的固定间隔

grails - 参数#1未设置错误

hibernate - 在Grails/GORM中为名称-值对的集合建模

java - 如何在 Java/Groovy 中开发数据透视表

grails - 如何根据拒绝访问的原因使Grails的Spring Security Core呈现不同的页面

c# - Quartz.Net 的 IJobFactory 接口(interface)中 ReturnJob 的目的是什么