2011-05-31 47 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 向下滾動到標題爲「通過配置定義隊列名稱和訂購者主題」的部分