Grails 2.2.1 没有读取插件配置文件



我有一个应用程序和一个用Grails 2.1.1构建的插件,我升级到2.2.1,我遇到了一个奇怪的问题。我的应用程序开始爆炸,因为我的应用程序中定义的配置值突然Config.groovy groovy.Util.ConfigObject而不是它们的实际值。这是问题的第 1 部分,第 2 部分是在我的应用程序中,我在应用程序的Config.groovy中定义

grails.config.defaults.locations = [
    "classpath:DemoPluginConfig.groovy",
]

DemoPluginConfig.groovy包含此属性

oo.memcached.timeout=400000

并且DemoPluginConfig.groovy文件在我的演示插件的src/java文件夹中。我有一个 memcache 服务,一旦服务准备就绪,我就会尝试设置该超时属性:

def void afterPropertiesSet() {
        ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder()
        def config = grailsApplication.config;
        def operationTimeOut = config.oo.memcached.timeout
        cfb.setOpTimeout(timeOut)
    }

Grails run-app 在这一点上爆炸并出现错误:

Caused by MissingMethodException: No signature of method: net.spy.memcached.ConnectionFactoryBuilder.setOpTimeout() is applicable for argument types: (groovy.util.ConfigObject) values: [[:]]
Possible solutions: setOpTimeout(long)
->>   55 | unwrap                          in org.codehaus.groovy.runtime.ScriptBytecodeAdapter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     46 | call                            in org.codehaus.groovy.runtime.callsite.PojoMetaClassSite
|     45 | defaultCall . . . . . . . . . . in org.codehaus.groovy.runtime.callsite.CallSiteArray
|    108 | call                            in org.codehaus.groovy.runtime.callsite.AbstractCallSite
|    116 | call . . . . . . . . . . . . .  in     ''
|     20 | afterPropertiesSet              in com.millennialmedia.ui.core.MemcachedService
|   1514 | invokeInitMethods . . . . . . . in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
|   1452 | initializeBean                  in     ''
|    519 | doCreateBean . . . . . . . . .  in     ''
|    122 | doCreateBean                    in org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory
|    456 | createBean . . . . . . . . . .  in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
|    271 | resolveInnerBean                in org.springframework.beans.factory.support.BeanDefinitionValueResolver
|    126 | resolveValueIfNecessary . . . . in     ''
|   1360 | applyPropertyValues             in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
|   1118 | populateBean . . . . . . . . .  in     ''

如果我尝试再运行几次 grails run-app,它会成功启动,但应用程序在加载带有另一个groovy.Util.ConfigObject的页面时爆炸,这是不可序列化的错误。在应用程序崩溃之前逐步调试表明,当我们到达setOptTimeOut行时,grailsApplication.config只包含来自我的应用程序的 Config.groovy 的配置选项,就好像插件DemoPLuginConfig.groovy中的值被忽略了一样。

恢复到 2.1.1 会使一切恢复正常。在这一点上,我不知道该去哪里看。

你不应该使用operationTimeOut而不是下面的timeOut

cfb.setOpTimeout(timeOut)

尝试将Groovy配置放在grails-app/conf中,而不是src/java中。然后,查看是否可以一致地重现错误。

如果一切都失败了,圣杯清洁可能会占上风。

希望对你有帮助

相关内容

  • 没有找到相关文章

最新更新