小编Jer*_*emy的帖子

如何在Grails中动态选择服务

从我的控制器我想基于参数动态选择服务.

目前我有一个基本服务和一些其他服务,可以扩展这个基本服务.基于参数,我调用一个类,该类根据param创建一个bean名称,并最终调用以下内容:

import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes as GA

class Resolver {
    def ctx

def getBean(String beanName) {
    if(!ctx) {
        ctx = SCH.servletContext.getAttribute(GA.APPLICATION_CONTEXT)
    }
    return ctx."${beanName}"
}
Run Code Online (Sandbox Code Playgroud)

}

这将返回我想要的服务.但是我觉得这样做很脏.有没有人有更好的方法来处理基于某些参数获取服务(或任何其他bean)?

谢谢.

grails spring dependency-injection grails-2.0

10
推荐指数
1
解决办法
2045
查看次数

断言Spock中的项目列表

使用Spock 0.7和Grails 2.04.试图建立一个测试环境.我需要一些关于测试对象列表的帮助.

我有一个位置对象列表.我想测试每个对象的日期.我正在迭代但不确定如果日期不相等,测试会如何失败.有没有一种好方法来测试列表中的对象?我在下面列出了我的代码块.

then:
        weatherList != null
        weatherList.empty != null
        weatherList.size() == 3
        weatherList.each {
            Calendar today = Calendar.getInstance();
            today.clearTime()
            if(it.forecastDate != today) {
                return false
            }
        }
Run Code Online (Sandbox Code Playgroud)

spock grails-2.0

5
推荐指数
1
解决办法
7078
查看次数

使用jdbcStore Grails Quartz Plugin错误

我尝试使用Grails的最新石英插件:quartz:1.0.1.

如果我离开jdbcStore = false,它会工作,如果我设置为true则失败.QuartzConfig.groovy:

    quartz {
       autoStartup = true
       jdbcStore = true
       waitForJobsToCompleteOnShutdown = true
       exposeSchedulerInRepository = false

    props {
        scheduler.skipUpdateCheck = true
     }
    }
Run Code Online (Sandbox Code Playgroud)

这是属性文件:

    org.quartz.scheduler.instanceName reporting_test
    org.quartz.scheduler.instanceId AUTO

    org.quartz.threadPool.class org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount 5
    org.quartz.threadPool.threadPriority 5

    org.quartz.jobStore.misfireThreshold 60000

    org.quartz.jobStore.class org.quartz.impl.jdbcjobstore.JobStoreTX
    org.quartz.jobStore.driverDelegateClass org.quartz.impl.jdbcjobstore.StdJDBCDelegate

    org.quartz.jobStore.useProperties false
    org.quartz.jobStore.tablePrefix QRTZ_
    org.quartz.jobStore.isClustered true
    org.quartz.jobStore.clusterCheckinInterval 5000

    org.quartz.plugin.shutdownhook.class org.quartz.plugins.management.ShutdownHookPlugin
    org.quartz.plugin.shutdownhook.cleanShutdown true
Run Code Online (Sandbox Code Playgroud)

我一直试图尝试数据源设置,因为我更喜欢使用我在Datasource.groovy中设置的默认DS.无论数据源的设置如何,我仍然会在启动时收到以下错误消息.

        2013-12-18 13:43:14,693 [localhost-startStop-1] ERROR context.GrailsContextLoader  - Error initializing the application: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Line 1: FOR UPDATE clause allowed only for DECLARE …
Run Code Online (Sandbox Code Playgroud)

grails quartz-scheduler grails-plugin

2
推荐指数
1
解决办法
4066
查看次数