Сбой аннотации в очереди Grails jms с последним параметром - PullRequest
0 голосов
/ 31 мая 2011

Я использую аннотацию grails.plugin.jms.Queue из плагина JMS Grails, но я не могу понять, как использовать переменную в качестве значения атрибута name.

как это:

private static final inDebit = ConfigurationHolder.config.Q_IN_DEBIT

@Queue(name = inDebit )

Что дает мне следующую ошибку:

Атрибут 'name' должен иметь тип 'java.lang.String'; но нашел тип 'java.lang.Object' в @ grails.plugin.jms.Queue

Я использую Grails 1.3.7, Grails JMS Plugin 1.1

Похоже, переменная inDebit где-то теряет свой тип?

Ответы [ 4 ]

1 голос
/ 31 мая 2011

Статические держатели устарели в 1.4 . Вы должны использовать grailsApplication вместо:

def grailsApplication
private static final String inDebit = grailsApplication.config.Q_IN_DEBIT
1 голос
/ 31 мая 2011

Он не потерял свой тип, вы его никогда не указывали.Измените на

private static final String inDebit = ConfigurationHolder.config.Q_IN_DEBIT

Groovy может определить тип во время выполнения, но, если он у вас есть, это просто Object, и это то, что видит компилятор.

0 голосов
/ 30 июля 2015

Не совсем ответ на вопрос, но я думаю, это то, что вы действительно хотите сделать:

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

И поместите jms.destinations.queue.key.in.config=ActualQueueName в свой Config.groovy

ПроверьтеДокументы Grails JMS здесь: serviceMethodListeners Прокрутите вниз до раздела, озаглавленного «Определение имен очереди и тем подписчика через конфигурацию»

0 голосов
/ 27 сентября 2011

Это ограничение в обработке аннотаций Groovy: http://jira.codehaus.org/browse/GROOVY-3278

...