【发布时间】:2014-10-10 05:38:11
【问题描述】:
嘿,我有以下问题。
我有一个从控制器调用的服务“a”并且运行良好。
问题:当我从 cron 调用相同的服务时,服务找不到会话对象。
CRON 作业
@Transactional
class TESTCLASS{
def javax.sql.DataSource dataSource
def sessionFactory
static triggers = {
cron name: 'TESTCLASS', cronExpression: "0 07 23 * * ?"
}
def execute() {
Session s = sessionFactory.getCurrentSession();
CrawlerService crawler = new CrawlerService()
crawler.updatePagesWithoutCount(s)
}
}
服务
@Transactional
class CrawlerService {
def updatePagesWithoutCount(Session s){
if(session==null){println ">>>> SESSION = NULL"}
else{println ">>>> SESSION OK: "+session.toString()}
//get all entries without count yet
在打印演示文本之前,该方法就失败了
Error |
2014-08-16 23:07:00,132 [quartzScheduler_Worker-1] ERROR listeners.ExceptionPrinterJobListener - Exception occurred in job: Grails Job
Message: java.lang.NullPointerException
Line | Method
->> 111 | execute in grails.plugins.quartz.GrailsJobFactory$GrailsJob
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 202 | run in org.quartz.core.JobRunShell
^ 573 | run . . in org.quartz.simpl.SimpleThreadPool$WorkerThread
Caused by NullPointerException: null
->> 29 | $tt__execute in twagocrawler.UpdatePagesWithoutCountJob
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 104 | execute in grails.plugins.quartz.GrailsJobFactory$GrailsJob
| 202 | run . . in org.quartz.core.JobRunShell
^ 573 | run in org.quartz.simpl.SimpleThreadPool$WorkerThread
有什么想法吗?如何访问服务中的会话?顺便说一句,在 cron-job 中可以访问会话,我可以在那里轻松地使用它。服务中的 sessionFactory 对象也为空。
真的会得到任何帮助..
【问题讨论】:
标签: session grails cron quartz-scheduler