3

Springアプリケーションの起動時に、現在次の例外が発生しています。

2012-04-27 17:42:51,021 ERROR [main] com.hazelcast.impl.FactoryImpl - /10.188.31.125:54327 [dev] ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.context.support.ClassPathXmlApplicationContext@1fd0fafc: startup date [Fri Apr 27 17:42:46 CEST 2012]; root of context hierarchy
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.context.support.ClassPathXmlApplicationContext@1fd0fafc: startup date [Fri Apr 27 17:42:46 CEST 2012]; root of context hierarchy
       at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:337) [spring-context-3.1.0.RELEASE.jar:3.1.0.RELEASE]
       at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324) [spring-context-3.1.0.RELEASE.jar:3.1.0.RELEASE]
       at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:263) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:364) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:570) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
       at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:247) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:364) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:570) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
       at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:247) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:165) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:140) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:65) ~[spring-data-commons-core-1.2.1.RELEASE.jar:na]
       at org.springframework.data.mongodb.core.MongoTemplate.determineCollectionName(MongoTemplate.java:1494) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na]
       at org.springframework.data.mongodb.core.MongoTemplate.findAll(MongoTemplate.java:959) ~[spring-data-mongodb-1.0.1.RELEASE.jar:na]
       at net.bigpoint.globalchat.hazelcast.MongoMapStore.loadAllKeys(MongoMapStore.java:59) ~[classes/:na]
       at com.hazelcast.impl.concurrentmap.MapStoreWrapper.loadAllKeys(MapStoreWrapper.java:131) ~[hazelcast-2.0.2.jar:2.0.2]
       at com.hazelcast.impl.FactoryImpl.checkInitialization(FactoryImpl.java:588) [hazelcast-2.0.2.jar:2.0.2]
       at com.hazelcast.impl.FactoryImpl.getOrCreateProxyByName(FactoryImpl.java:546) [hazelcast-2.0.2.jar:2.0.2]
       at com.hazelcast.impl.FactoryImpl.getMap(FactoryImpl.java:514) [hazelcast-2.0.2.jar:2.0.2]
       at com.hazelcast.impl.FactoryImpl$HazelcastInstanceProxy.getMap(FactoryImpl.java:240) [hazelcast-2.0.2.jar:2.0.2]
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_27]
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_27]
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_27]
       at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_27]
       at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:149) [spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
       at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:570) [spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactory

バックグラウンド:

  • スプリングセキュリティ用のauthenticationProviderには、ヘーゼルキャストマップが必要です
  • hazelcastは、mongoのspring-dataに基づくマップストアから起動時にデータをロードします
  • 春のデータはApplicationEventMulticasterを使用したい
  • まだありません。

私が知る限り、configularApplicationContextのinit()が呼び出されたときにマルチキャストが作成されます。これは、春のセキュリティ関連の後で発生するようです。(直後...)

アプリケーションコンテキストにマルチキャストを以前にセットアップするように、またはヘーゼルキャストを後でセットアップするように強制できますか?

4

1 に答える 1

4

Spring Securityまたは一般的なSpringの問題かどうかはわかりませんが、Spring Securityクラスはinit()configurableApplicationContextが呼び出される前に(つまり、ApplicationEventMulticasterが作成される前に)初期化されます。

これを回避する唯一の方法は、セキュリティ実装から依存性注入を削除し、初めて使用するときにアプリケーションコンテキストからすべてを手動で取得することであるため、これは重要な問題だと考えています(これは今のところ行っています)。

おそらく、Jiraの問題を提起します。

于 2012-05-06T12:48:21.973 に答える