gpt4 book ai didi

session - Grails Quartz 插件 : Call service from cron (Session = NULL)

转载 作者:行者123 更新时间:2023-12-02 14:07:20 25 4
gpt4 key购买 nike

嘿,我有以下问题。

我有一个从 Controller 调用的服务“a”并且运行良好。

问题:当我从 cron 调用相同的服务时,服务找不到 session 对象。

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

有任何想法吗?如何访问服务中的 session ?顺便说一句,在 cron-job 中可以访问 session ,我可以在那里轻松地使用它。服务中的 sessionFactory 对象也为空。

真的会给予任何帮助..

最佳答案

在调用它之前,您正在创建服务的新实例:

CrawlerService crawler = new CrawlerService()
crawler.updatePagesWithoutCount(s)

所以,这不会得到 Spring 依赖注入(inject)的东西。你有没有试过做一个:
def crawlerService

在你的工作类的顶部?这应该使得 CrawlerService 被正确注入(inject)。

另外,我注意到您将 session 作为参数传递给 updatePagesWithoutCount,但是您永远不会对服务方法内部传递的变量执行任何操作。

关于session - Grails Quartz 插件 : Call service from cron (Session = NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com