Grails jms队列注释失败,带有最终参数

时间:2011-05-31 11:04:32

标签: grails annotations queue jms

我正在使用Grails JMS插件中的注释grails.plugin.jms.Queue,但我无法弄清楚如何使用变量作为name属性的值。

像这样:

private static final inDebit = ConfigurationHolder.config.Q_IN_DEBIT

@Queue(name = inDebit )

这给了我以下错误:

  

属性'name'的类型应为'java.lang.String';但在@ grails.plugin.jms.Queue

中找到了'java.lang.Object'类型

我正在使用 Grails 1.3.7,Grails JMS插件1.1

在我看来,inDebit变量在某处丢失了它的类型?

4 个答案:

答案 0 :(得分:1)

它没有丢失它的类型,你从未指定它。改为

private static final String inDebit = ConfigurationHolder.config.Q_IN_DEBIT

Groovy可以在运行时推断出类型,但正如你所拥有的那样,它只是Object,这就是编译器所看到的。

答案 1 :(得分:1)

静态持有者正在deprecated in 1.4。您应该使用grailsApplication代替:

def grailsApplication
private static final String inDebit = grailsApplication.config.Q_IN_DEBIT

答案 2 :(得分:0)

这是Groovy注释处理的限制: http://jira.codehaus.org/browse/GROOVY-3278

答案 3 :(得分:0)

这不是问题的答案,但我认为这是你真正想做的事情:

@Queue(name = '$queue.key.in.config')

jms.destinations.queue.key.in.config=ActualQueueName放入Config.groovy

点击这里的grails jms文档:serviceMethodListeners 向下滚动到标有“通过配置定义队列名称和订阅者主题”

的部分