2012-02-26 12 views
1

私が持っているresource.groovyGrailsは2.0.1:非同期メッセージング: `jmsConnectionFactory`コンパイルエラー

beans = { 
    jmsConnectionFactory(org.apache.activemq.ActiveMQConnectionFactory) { brokerURL = 'vm://localhost' } 
} 

と実行時にそれが

Running Grails application 
| Error 2012-02-24 18:02:13,490 [pool-6-thread-1] ERROR spring.GrailsRuntimeConfigurator - [RuntimeConfiguration] Unable to load beans from resources.groovy 
Message: No such property: org for class: resources 
    Line | Method 
->> 3 | doCall     in resources$_run_closure1 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 736 | invokeBeanDefiningClosure in grails.spring.BeanBuilder 
| 569 | beans . . . . . . . . . . in  '' 
| 736 | invokeBeanDefiningClosure in  '' 
| 569 | beans . . . . . . . . . . in  '' 
| 511 | invokeMethod    in  '' 
| 303 | innerRun . . . . . . . . in java.util.concurrent.FutureTask$Sync 
| 138 | run      in java.util.concurrent.FutureTask 
| 886 | runTask . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker 
| 908 | run      in  '' 
^ 662 | run . . . . . . . . . . . in java.lang.Thread 
| Error 2012-02-24 18:02:16,537 [pool-6-thread-1] ERROR context.GrailsContextLoader - Error executing bootstraps: Error creating bean with name 'delayedCreateMessageJmsListenerContainer': Cannot resolve reference to bean 'jmsConnectionFactory' while setting bean property 'connectionFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'jmsConnectionFactory' is defined 
Message: Error creating bean with name 'delayedCreateMessageJmsListenerContainer': Cannot resolve reference to bean 'jmsConnectionFactory' while setting bean property 'connectionFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'jmsConnectionFactory' is defined 

それはに更新した後、アップグレード前に、すべてうまくいったと言います2.0.1このエラーで失敗しました。私はgroovyコンパイラ1.8.6を使用しています。

答えて

2

それは変装ににClassNotFoundエラーであってもよいです。

import org.apache.activemq.ActiveMQConnectionFactory

を、あなたがClassNotFoundErrorを得ればそう、それが欠落している依存関係を追跡する問題だ場合は、以下を参照してください。import文を追加してみてください。

+0

JMSサービスプロバイダを同じホスト上の異なるプロジェクトから欲しい場合、両方のプロジェクト(コンシューマ+サービスプロバイダ)にjmsプラグインをインストールすると、コンフリクトがあるので、いくつかの設定を使ってどのように扱うことができるのかを素早く考えてください。 –

+0

シナリオを正しく理解すれば、これは私が今まで実行したことではありません。私はそれについて考えて、何かが頭に浮かぶと返信します。 – proflux

+0

確かに、消費者とブローカーを分けることについて –

5

私は常にGrailsでActiveMQを以下のように設定しました:

BuildConfig.groovy

dependencies { 
    compile 'org.apache.activemq:activemq-core:5.5.0' 
} 

resources.groovy

import org.springframework.jms.connection.SingleConnectionFactory 
import org.apache.activemq.ActiveMQConnectionFactory 

beans = { 
    jmsConnectionFactory(SingleConnectionFactory) { 
     targetConnectionFactory = { ActiveMQConnectionFactory cf -> 
      brokerURL = 'vm://localhost' 
     } 
    } 
} 
+0

ありがとう、私はランタイムのjarを追加し、それは働いた! –

+0

簡単な質問ですが、同じホスト上の異なるプロジェクトからJMSサービスプロバイダを取得する場合、両方のプロジェクト(コンシューマ+サービスプロバイダ)にjmsプラグインをインストールすると、ポート競合が発生するので、いくつかの設定を使用して処理しました –

+0

@ Jigar Joshi:これに対する解決策を見つけましたか? – Swamy