首页 文章

Ignite Spring Integration似乎打破2.4(从2.3升级)

提问于
浏览
0

我们正在从2.3升级到2.4并且意识到在其javadoc中添加的行中引用的IgniteSpringBean中的更改导致我们将PostConstruct中的大量引用移动到handleContextRefresh .

A note should be taken that Ignite instance is started after all other Spring beans have been initialized and right before Spring context is refreshed. That implies that it's not valid to reference IgniteSpringBean from any kind of Spring bean init methods like PostConstruct. If it's required to reference IgniteSpringBean for other bean initialization purposes, it should be done from a ContextRefreshedEvent listener method declared in that bean.

然而,这打破点燃按照建议配置的 spring 事务配置,我不知道如何解决 . 基本上我们在spring应用程序xml中有以下内容,其中配置了IgniteSpringBean和SpringTransactionManager,它们在2.3中工作但是无法启动引用上面的更改2.4(我将稍微添加异常,因为我的机器突然停机),

<bean id="igniteSpringBean" class="org.apache.ignite.IgniteSpringBean">
    <property name="configuration">
        <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
            <property name="igniteInstanceName" value="ObjectManagerGrid"/>
            <property name="clientMode" value="true"/>
            ...
            ...
        </bean>
    </property>
</bean>

<!-- Enable Spring transaction abstraction for Ignite transactions -->
<bean id="transactionManager" class="org.apache.ignite.transactions.spring.SpringTransactionManager">
    <property name="igniteInstanceName" value="ObjectManagerGrid"/>
    <property name="transactionConcurrency" value="PESSIMISTIC"/>
</bean>

<!-- Enable annotation-driven transaction configuration/demarcation -->
<tx:annotation-driven/>

关于如何解决这个问题的任何线索?

谢谢!

更新:以下是例外,

ignite-object-manager - [错误] 2018-05-24 18:36:45.133 [main] org.springframework.boot.SpringApplication - 应用程序启动失败org.springframework.beans.factory.BeanCreationException:创建名为'transactionManager的bean时出错'在类路径资源[applicationContext.xml]中定义:init方法的调用失败;嵌套异常是类org.apache.ignite.IgniteIllegalStateException:不存在具有提供名称的Ignite实例 . 你有没有调用Ignition.start(..)来启动一个Ignite实例?位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)的[name = ObjectManagerGrid] . springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306)at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java) :197)org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFac) tory.java:761)atg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)位于org.springframework.boot上的org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) .context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)的org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)位于sun.reflect的sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)的com.brocade.dcm.Application.main(Application.java:63) . NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)位于org.springframework.bo的java.lang.reflect.Method.invoke(Method.java:498)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ot.loader.MainMethodRunner.run(MainMethodRunner.java:48)org.springframework.boot.loader.Launcher.launch(Launcher.java:87)org.springframework.boot.loader.Launcher.launch(Launcher.java: 50)at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)引起:org.apache.ignite.IgniteIllegalStateException:不存在具有提供名称的Ignite实例 . 你有没有调用Ignition.start(..)来启动一个Ignite实例? org.apache.ignite.IgnitionEx.grid(IgnitionEx.java:1376)中的[name = ObjectManagerGrid]位于org.apache.ignite.transactions的org.apache.ignite.Ignition.ignite(Ignition.java:530) . spring.SpringTransactionManager.afterPropertiesSet(SpringTransactionManager.java:357)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory . java:1624)...省略了22个常用帧

1 回答

  • 0

    它没有被破坏,而是在IGNITE-6555中修复 .

    不幸的是,这也意味着你必须找到一种方法现在推迟SpringTransactionManager的创建/初始化 .

    有关user list问题的更多详细信息 .

相关问题