【问题标题】:Grails services and Spring task schedulingGrails 服务和 Spring 任务调度
【发布时间】:2012-03-27 18:19:48
【问题描述】:

我有一个 Grails 2.0.1 webappp,它应该每隔几个小时运行一些任务。我正在使用 Spring 的集成任务调度来实现这一点,所以我不需要另一个插件。

但是,当我尝试对数据库执行任何操作(例如保存模型)时,我收到以下错误消息:

消息:没有方法签名:rssreader.Feed.save() 适用于参数类型:() 值:[] 可能的解决方案:save()、save(boolean)、save(java.util.Map)、wait()、any()、wait(long)

使用以下代码:

@Transactional
class FeedRefresherService {

    @Scheduled(fixedDelay = 3000L)
    public void madeUpMethod() {
        def feed = new Feed()
        feed.title = "Test feed"
        feed.save()
    }
}

我认为这与 GORM 方法由于调度而无法使用有关,但我不确定如何从这里开始。 有人知道吗?

【问题讨论】:

  • 如果是因为 GORM 方法不可用,我认为您不会看到将保存方法列为可能的解决方案。
  • 我猜 grails 不支持 @Scheduled 注解。 jira.grails.org/browse/GRAILS-8921

标签: spring hibernate grails groovy grails-orm


【解决方案1】:

我认为您的 Hibernate 会话“断开连接”我过去也遇到过类似的错误,但不记得我是如何解决的...:(

对于任务调度,您可以使用相当稳定的quartz plugin,我在生产中使用它已经有一段时间了。看看Executor plugin 的源代码,它处理将休眠会话与多个线程相关联,虽然它可能无法解决您的问题,但它可能会引导您了解如何解决它。

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2013-10-18
    • 2020-01-02
    • 1970-01-01
    • 2022-12-01
    相关资源
    最近更新 更多