小编Blu*_*lue的帖子

Spring Integration:没有可用的输出通道或回复通道标头

我写了一个简单的spring集成应用程序,它将文件从一个目录移动到另一个目录,它看起来像这样:

@Bean
@InboundChannelAdapter(value="requestChannel", poller = @Poller(fixedDelay="100"))
public FileReadingMessageSource adapter(){
    FileReadingMessageSource source = new FileReadingMessageSource();
    source.setDirectory(new File("D:/TestIn"));
    return source;

}

@Bean 
MessageChannel requestChannel(){
    return new DirectChannel();
}

@Bean
@ServiceActivator(inputChannel="requestChannel")
public FileWritingMessageHandler handle(){
    FileWritingMessageHandler handler = new FileWritingMessageHandler(new File("D:/TestOut"));
    handler.setDeleteSourceFiles(true);
    return handler;
}
Run Code Online (Sandbox Code Playgroud)

它工作得非常好,但每次复制操作都会给我这个例外

    2015-03-26 09:56:39.222  INFO 4772 --- [ask-scheduler-5] o.s.i.file.FileReadingMessageSource      : Created message: [GenericMessage [payload=D:\TestIn\9.txt, headers={id=d8b27257-0a90-b7ad-65cb-85e93668fb5a, timestamp=1427360199222}]]
2015-03-26 09:56:39.223 ERROR 4772 --- [ask-scheduler-5] o.s.integration.handler.LoggingHandler   : org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available
    at org.springframework.integration.dispatcher.AbstractDispatcher.wrapExceptionIfNecessary(AbstractDispatcher.java:133)
Run Code Online (Sandbox Code Playgroud)

我在另一个主题中读到,当您在代码中的某处过滤掉标题时会发生这种情况,但此跟踪的第一行告诉我,生成的唯一标头是id和timestamp.

java spring spring-integration

8
推荐指数
1
解决办法
9794
查看次数

使用自定义IP从Docker注册到Eureka

我在Docker VM中运行Spring Cloud Eureka.我有注册的服务,但是他们在Docker VM中使用他们的IP地址,但为了能够正确使用它们,我需要他们使用我可以从VM外部访问的IP地址.

例如在我的VM中使用172.xxx的寄存器和我可以使用192.168.xxx从我的浏览器访问REST接口我需要它们注册为192.168.xxx

如何告诉我的服务注册特定的IP地址?

docker netflix-eureka

6
推荐指数
2
解决办法
3910
查看次数

如何使用JSON数据源填充报表而不获取空值?

我正在使用Jasper Reports来构建一个简单的报告pdf.我有一个看起来像这样的JSON文件:

{"employees": [
    {"firstName" : "John", "lastName" : "Doe"},
    {"firstName" : "Anna", "lastName" : "Smith"},
    {"firstName" : "Peter", "lastName" : "Jones"}
]}
Run Code Online (Sandbox Code Playgroud)

而我正试着这样读:

File file = new File("E:/Workspaces/jasperPDFreport/src/main/resources/emp.json");
JsonDataSource datasource = new JsonDataSource(file);

JasperDesign jasperDesign = JRXmlLoader.load("E:/Workspaces/jasperPDFreport/src/main/resources/jsonTemplate.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
Map parameters = new HashMap();
JasperPrint jasperPrint;
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, datasource);
JasperExportManager.exportReportToPdfFile(jasperPrint, "BasicReport.pdf");
JasperViewer.viewReport(jasperPrint);
Run Code Online (Sandbox Code Playgroud)

但是我的JSON文件中的值不会传递给我的pdf.

这是我的模板:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.1.1.final using JasperReports Library version 6.1.1  -->
<!-- 2015-10-22T13:45:32 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" …
Run Code Online (Sandbox Code Playgroud)

java json jasper-reports

4
推荐指数
1
解决办法
5561
查看次数

c ++接口告诉我我的参数尚未声明

我有一个针对自动机的许多状态的泛型类.它声明如下:

#ifndef STATE_H_
#define STATE_H_
#include "Automat.h"

class State {
public:
virtual void readChar(char c, Automat* automat) = 0;
virtual ~State(){};
};

#endif /* STATE_H_ */
Run Code Online (Sandbox Code Playgroud)

我在eclipse中遇到这个错误:

此行有多个标记

  • 从'Automat*const'到'int*'的参数2没有已知的转换
  • virtual void State :: readChar(char,int*)
  • 'Automat'尚未宣布

我的自动贩卖机如下:

    #ifndef Automat_H_
    #define Automat_H_
    #include "../../Scanner/src/IScanner.h"
    #include "./States/State.h"

    class Automat {
    public:
        int count;
        State* current;
        IScanner* scanner;
        Automat(IScanner *s);
        void readChar(char c);
        void setState(State *s);
        void error();
        ~Automat();
    };

    #endif /* Automat_H_ */
Run Code Online (Sandbox Code Playgroud)

最后实现了Automat,我将省略一些方法.

#include "Automat.h"
#include "./States/StartState.h"


Automat::Automat(IScanner *s) {
    current = …
Run Code Online (Sandbox Code Playgroud)

c++ interface

0
推荐指数
1
解决办法
356
查看次数