Ignite Spring Integration кажется сломанной с 2.4 (обновление с 2.3) - PullRequest
0 голосов
/ 24 мая 2018

Мы обновляемся с 2.3 до 2.4 и поняли, что изменение, внесенное в IgniteSpringBean, на которое есть ссылка в этой добавленной строке в его javadoc, привело к тому, что мы переместили множество ссылок в PostConstruct на handleContextRefresh.

" Следует отметить, что экземпляр Ignite запускается после инициализации всех других bean-компонентов Spring и непосредственно перед обновлением контекста Spring. Это означает, что ссылаться на IgniteSpringBean из любого метода инициализации bean-компонента Spring, такого как PostConstruct, недопустимо.он должен ссылаться на IgniteSpringBean для других целей инициализации bean-компонента, это должно быть сделано из метода прослушивателя ContextRefreshedEvent, объявленного в этом bean-компоненте. "

Однако это нарушает конфигурацию транзакции ignite 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: ошибка создания бина с именем «actionManager », определенным в классересурс пути [applicationContext.xml]: сбой вызова метода init;Вложенное исключение - класс org.apache.ignite.IgniteIllegalStateException: экземпляр Ignite с указанным именем не существует.Вы вызывали Ignition.start (..), чтобы запустить экземпляр Ignite?[Имя = ObjectManagerGrid] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1628) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555) в орг.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) в org.springframeworkwork.beans.factory.support..DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302).: 197) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:761) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:866) в org.springframework.context.support.AbstractApplicationContext.me.context.embedded.EmbeddedWebApplicationContext.refresh (EmbeddedWebApplicationContext.java:122) в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:737) в org.springframework.boot.Savaorg.springframework.boot.SpringApplication.run (SpringApplication.java:314) в com.brocade.dcm.Application.main (Application.java:63) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Methodjava.keke.inkeke.inkeв org.springframework.boot.loader.MainMethodRunner.run (MainMethodRunner.java:48) в org.springframework.boot.loader.Launcher.launch (Launcher.java:87) в org.springframework.boot.loader.Laader.(Launcher.java:50) в org.springframework.boot.loader.JarLauncher.main (JarLauncher.java:51) Причина: org.apache.ignite.IgniteIllegalStateException: Ignite экземпляр с указанным именем не существует.Вы вызывали Ignition.start (..), чтобы запустить экземпляр Ignite?[name = ObjectManagerGrid] в org.apache.ignite.internal.IgnitionEx.grid (IgnitionEx.java:1376) в org.apache.ignite.Ignition.ignite (Ignition.java:530) в org.apache.ignite.transactions.spring.SpringTransactionManager.afterPropertiesSet (SpringTransactionManager.java:357) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1687) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.Java: 1624) ... пропущено 22 общих кадра

1 Ответ

0 голосов
/ 31 мая 2018

Он не был сломан, а исправлен в IGNITE-6555 .

К сожалению, это также означает, что вам придется найти способ отложить создание / инициализацию SpringTransactionManager.

Подробнее о проблеме в списке пользователей .

...