【问题标题】:Grails jms queue annotation fails with final parameterGrails jms 队列注释因最终参数而失败
【发布时间】:2011-05-31 11:04:32
【问题描述】:

我正在使用 Grails JMS 插件中的注释 grails.plugin.jms.Queue,但我不知道如何使用变量作为 name 属性的值。

像这样:

private static final inDebit = ConfigurationHolder.config.Q_IN_DEBIT

@Queue(name = inDebit )

这给了我以下错误:

属性“名称”应具有类型“java.lang.String”;但在@grails.plugin.jms.Queue 中找到类型'java.lang.Object'

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

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

【问题讨论】:

    标签: grails annotations queue jms


    【解决方案1】:

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

    private static final String inDebit = ConfigurationHolder.config.Q_IN_DEBIT
    

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

    【讨论】:

      【解决方案2】:

      静态持有者是deprecated in 1.4。你应该改用grailsApplication

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

      【讨论】:

        【解决方案3】:

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

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

        并将jms.destinations.queue.key.in.config=ActualQueueName 放入您的 Config.groovy

        在此处查看 grails jms 文档:serviceMethodListeners 向下滚动到标有“通过配置定义队列名称和订阅者主题”的部分

        【讨论】:

          【解决方案4】:

          这是 Groovy 注释处理的一个限制: https://issues.apache.org/jira/browse/GROOVY-3278

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-06-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-18
            • 2021-02-26
            • 2016-01-11
            • 2011-10-10
            相关资源
            最近更新 更多