首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Http出站网关启动时的问题

与Http出站网关启动时的问题
EN

Stack Overflow用户
提问于 2016-07-22 08:32:58
回答 1查看 1.3K关注 0票数 0

我是Spring的新手,我正在尝试开发一个应用程序,该应用程序简单地(1)轮询一个扩展名为.dat的新文件,其中包含csv格式的数据(2)为每一行初始化类RecordDTO的域POJO对象,最后(3)将该对象作为有效负载发送到带有POST的REST服务。

为此,我尝试使用Java进行Spring集成。

我遇到的问题是以下VerifyError / HttpRequestExecutingMessageHandler overrides final method onInit.异常。

代码语言:javascript
复制
2016-07-22 10:01:38.965 ERROR 4460 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'upcase' defined in eu.softeco.examples.SpringBootIntegrationTestApplication: Initialization of bean failed; nest
ed exception is java.lang.VerifyError: class org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler overrides final method onInit.()V
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.1.RELEASE.jar:4.3.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.1.RELEASE.jar:4.3.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.1.RELEASE.jar:4.3.1.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.1.RELEASE.jar:4.3.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.1.RELEASE.jar:4.3.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.1.RELEASE.jar:4.3.1.RELEASE]

...

Caused by: java.lang.VerifyError: class org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler overrides final method onInit.()V
    at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_45]
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) ~[na:1.8.0_45]
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_45]

...

下面是有关我的代码和maven配置的相关细节。请不要这样

1)在将任何数据放入输入文件夹之前,问题就在启动时。

2)如果我用简单(注释) System.out.println替换最终的Http System.out.println步骤,一切都会正常工作。

下面是代码/配置详细信息。这是我使用定义的主要Spring应用程序类:

代码语言:javascript
复制
@SpringBootApplication
@EnableIntegration 
@IntegrationComponentScan
public class SpringBootIntegrationTestApplication {

        ...

    public static void main(String[] args) {
          SpringApplication.run(SpringBootIntegrationTestApplication.class, args);
    }

    /**
     * Inbound FileReadingMessageSource 
     */

    @Bean
    @InboundChannelAdapter(channel = "upcase.input", poller = @Poller(fixedDelay = "4000"))
    public MessageSource<File> fileReadingMessageSource() {
         FileReadingMessageSource source = new FileReadingMessageSource();
         source.setDirectory(new File(INBOUND_PATH));
         source.setFilter(new SimplePatternFileListFilter("*.dat"));
         return source;
    }


    /**
     * Spring Integration Java DSL Flow
         */

    @Bean
    public IntegrationFlow upcase() {

        FileToStringTransformer fileToStringTranformer = Transformers.fileToString();
        fileToStringTranformer.setDeleteFiles(true);

            return flow -> flow

                    // get string contents from fie 
                    .transform(fileToStringTranformer) 

                    // split into individual lines
                    .split( s -> s.applySequence(true).get().getT2().setDelimiters("\n"))

                    // cleanup lines from trailing returns
                    .transform( (String s) -> s.replace("\n", "").replace("\r", "") )

                    // convert csv string to RecordDTO object
                    .transform("@recordFromCsvTransformer.transform(payload)")

                    // print on System.out
                    // .handle(m -> System.out.println(m.getPayload()))

                    // send to 
                    .handle(Http.outboundGateway("http://localhost:8080/records")
                                .httpMethod(HttpMethod.POST)
                        .expectedResponseType(RecordDTO.class));


    }

}

RecordFromCsvTransformer类下面

代码语言:javascript
复制
@Component
public class RecordFromCsvTransformer
{
    @Transformer
    public RecordDTO transform(String csvline) throws Exception {

        RecordDTO record = new RecordDTO();

        ... parse csv and initialize record's fields...

        return record;
    }

}

最后给出了pom.xml的相关部分(依赖关系);

代码语言:javascript
复制
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.0.RC1</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

...

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-integration</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-file</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-http</artifactId>
        <version>2.1.0.RELEASE</version>
    </dependency>
    ...
</dependencies>

...

作为一个附带的问题,有人能建议我一些好的教程/入门指南来学习与Java注释/Java的Spring集成吗?到目前为止,我只找到了基于配置的入门指南或关于Java注释/DSL的材料,但这已经需要对Spring的先验知识。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 12:05:45

<version>2.1.0.RELEASE</version>

该版本的Spring与maven临时引入的spring-integration-core版本不匹配。

您需要使用相同版本的所有spring集成-*文件-检查哪个版本的spring-integration-file是由引导和使用相同的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38521771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档