簡體   English   中英

Spring Integration從1.0.x遷移到2.2.6

[英]Spring Integration migration from 1.0.x to 2.2.6

我正在使用spring framework 3.2.8遷移我的項目,該項目基於spring integration 1.0.x到2.2.6

我添加了新的JAR spring-integration-core-2.2.6.RELEASE.jar並刪除了舊的,並且還更新了我的applicationContext.xml文件中的xsd。 下面是applicationContext.xml中添加的xml架構詳細信息

<beans:beans xmlns="http://www.springframework.org/schema/integration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:stream="http://www.springframework.org/schema/integration/stream"
    xmlns:jms="http://www.springframework.org/schema/integration/jms"
    xmlns:httpinvoker="http://www.springframework.org/schema/integration/httpinvoker"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.2.xsd
            http://www.springframework.org/schema/integration
            http://www.springframework.org/schema/integration/spring-integration-2.2.xsd">

現在我面臨以下案例的一些困難:

下面是一個在SI 1.0.x中運行良好的小部分:

<channel id="msg.incoming">
        <queue capacity="600" />
</channel>

<service-activator input-channel="msg.incoming" ref="consumer"
        method="doPolling">
        <poller task-executor="consumerpool">
            <interval-trigger interval="1" time-unit="SECONDS" />
        </poller>
</service-activator>

<thread-pool-task-executor id="consumerpool"
        core-size="5" max-size="30" keep-alive-seconds="1000" queue-capacity="20" />

現在我希望用SI 2.2.6做同樣的事情,在瀏覽完SI文檔之后,我用以下內容更新了上面的部分:

<channel id="dnd.incoming">
        <queue capacity="600" />
    </channel>

<service-activator input-channel="dnd.incoming" ref="consumer" method="doDNDScrubbing">
        <poller fixed-delay="1000" />
</service-activator>

但不幸的是它不起作用,我也無法在SI 2.2.6中配置相似的行為。 我得到以下例外:

BeanDefinitionParsingException: Configuration problem: A <poller> element must include either an <interval-trigger/> or <cron-trigger/> child element.
2014-04-18 11:55:07,254 ERROR main [ContextLoader.initWebApplicationContext] - Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: A <poller> element must include either an <interval-trigger/> or <cron-trigger/> child element.
Offending resource: class path resource [applicationContext.xml]
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:72)
    at org.springframework.integration.config.xml.PollerParser.configureTrigger(PollerParser.java:100)
    at org.springframework.integration.config.xml.PollerParser.parseInternal(PollerParser.java:77)
    at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:59)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
    at org.springframework.integration.config.xml.IntegrationNamespaceHandler.parse(IntegrationNamespaceHandler.java:53)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)
    at org.springframework.integration.config.xml.IntegrationNamespaceUtils.configurePollerMetadata(IntegrationNamespaceUtils.java:149)
    at org.springframework.integration.config.xml.AbstractConsumerEndpointParser.parseInternal(AbstractConsumerEndpointParser.java:87)
    at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:59)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
    at org.springframework.integration.config.xml.IntegrationNamespaceHandler.parse(IntegrationNamespaceHandler.java:53)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:195)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

請幫我解決這個問題。

此致,Sandip Paul

  1. 根本不要使用XSD版本。 遷移到新版本會更容易。

  2. 請刪除未使用的xmlnses。

  3. <thread-pool-task-executor>應替換為<task:executor>

  4. <poller>元素必須包含<interval-trigger/><cron-trigger/>子元素。

它是來自Spring Integration <= 2.0的消息,而不是2.2 =>。 所以,請確保使用正確的Spring Integration罐子。

所有其他配置都可以。

這是一個很大的跳躍(1.0.x到2.2.x)。

這些子元素在2.0中被棄用,在2.1中被刪除。

請查看遷移指南2.0-> 2.12.1-> 2.2 3.0.2是當前版本; 它的遷移指南就在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM