2011-05-31 42 views
0

我使用Grails JMS插件中的注释grails.plugin.jms.Queue,但我无法弄清楚如何使用变量作为name属性的值。Grails jms队列注释失败,最终参数

这样的:

private static final inDebit = ConfigurationHolder.config.Q_IN_DEBIT 

@Queue(name = inDebit) 

使我有以下错误:

Attribute 'name' should have type 'java.lang.String'; but found type 'java.lang.Object' in @grails.plugin.jms.Queue

我使用 Grails的1.3.7,Grails的JMS插件1.1

在我看来像inDebit变量在某处失去其类型?

回答

1

它没有失去它的类型,你从来没有指定它。更改为

private static final String inDebit = ConfigurationHolder.config.Q_IN_DEBIT 

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

0

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

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

并把jms.destinations.queue.key.in.config=ActualQueueName在Config.groovy中

检查GRA ils jms docs here:serviceMethodListeners 向下滚动到标题为“通过配置定义队列名称和订购者主题”的部分