简体   繁体   English

Spring Integration从1.0.x迁移到2.2.6

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

I am migrating my project which was build on spring integration 1.0.x to 2.2.6 with spring framework 3.2.8 我正在使用spring framework 3.2.8迁移我的项目,该项目基于spring integration 1.0.x到2.2.6

I have added the new JAR spring-integration-core-2.2.6.RELEASE.jar and removed the old one and also updated the xsd in my applicationContext.xml file. 我添加了新的JAR spring-integration-core-2.2.6.RELEASE.jar并删除了旧的,并且还更新了我的applicationContext.xml文件中的xsd。 Below is the xml schema details added in the applicationContext.xml 下面是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">

Now I am facing some difficulties for the below case: 现在我面临以下案例的一些困难:

Below is a small section which was working fine in SI 1.0.x : 下面是一个在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" />

Now I want the same thing to be done with SI 2.2.6, After going through the SI docs, I have updated the above section with the below one: 现在我希望用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>

But unfortunately it is not working and also I am not able configure like behavior in SI 2.2.6. 但不幸的是它不起作用,我也无法在SI 2.2.6中配置相似的行为。 ​I am getting below exceptions: 我得到以下例外:

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)

Please help me resolving this. 请帮我解决这个问题。

Regards, Sandip Paul 此致,Sandip Paul

  1. Don't use versions for XSD at all. 根本不要使用XSD版本。 It will be easier to migrate to the new version. 迁移到新版本会更容易。

  2. Remove, please, unused xmlnses. 请删除未使用的xmlnses。

  3. <thread-pool-task-executor> should be replaced with <task:executor> <thread-pool-task-executor>应替换为<task:executor>

  4. A <poller> element must include either an <interval-trigger/> or <cron-trigger/> child element. <poller>元素必须包含<interval-trigger/><cron-trigger/>子元素。

It is a message from Spring Integration <= 2.0, not 2.2 =>. 它是来自Spring Integration <= 2.0的消息,而不是2.2 =>。 So, be sure that you use correct jars of Spring Integration. 所以,请确保使用正确的Spring Integration罐子。

All other configuration is OK. 所有其他配置都可以。

That is a big jump (1.0.x to 2.2.x). 这是一个很大的跳跃(1.0.x到2.2.x)。

Those child elements were deprecated in 2.0 and removed in 2.1. 这些子元素在2.0中被弃用,在2.1中被删除。

Please review the migration guides 2.0->2.1 and 2.1->2.2 . 请查看迁移指南2.0-> 2.12.1-> 2.2 3.0.2 is the current release; 3.0.2是当前版本; its migration guide is here . 它的迁移指南就在这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM