我遇到了Camel的问题。 我有这样的配置:
<properties>
<env.camel.version>2.19.1</env.camel.version>
<env.spring.version>4.3.10.RELEASE</env.spring.version>
<spring-security.version>4.2.3.RELEASE</spring-security.version>
<org.jvnet.jaxb2_commons.version>0.6.2</org.jvnet.jaxb2_commons.version>
<org.codehaus.jackson.version>2.8.9</org.codehaus.jackson.version>
<jaxb-api.version>2.2.11</jaxb-api.version>
<jaxb.impl.version>${jaxb-api.version}</jaxb.impl.version>
<ch.qos.logback.version>1.2.3</ch.qos.logback.version>
<org.slf4j.version>1.7.25</org.slf4j.version>
<jdk.version>1.7</jdk.version>
<itext.pdf.version>4.2.2</itext.pdf.version>
<apache.poi.microsoft.version>3.16</apache.poi.microsoft.version>
<junit.version>3.8.1</junit.version>
<maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>
<restlet-version>2.3.10</restlet-version>
<openjpa-all.version>2.4.2</openjpa-all.version>
<javax.servlet.jstl.version>1.2</javax.servlet.jstl.version>
</properties>
<dependencies>
<!-- Dipendenze per Camel start -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mail</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jms</artifactId>
<version>${env.camel.version}</version>
</dependency>
<!-- The camel-http4 component provides HTTP based endpoints for calling
external HTTP resources (as a client to call external servers using HTTP) -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http4</artifactId>
<version>${env.camel.version}</version>
</dependency>
<!-- The stream: component provides access to the System.in, System.out
and System.err streams as well as allowing streaming of file and URL. -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-restlet</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>5.15.0</version>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-2.1</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-api-2.1</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-freemarker</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jackson</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jaxb</artifactId>
<version>${env.camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-servlet</artifactId>
<version>${env.camel.version}</version>
</dependency>
<!-- Dipendenze Camel End -->
<!-- Spring dependencies Start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${env.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${env.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring-security.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring-security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${env.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${env.spring.version}</version>
</dependency>
<!-- spring web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${env.spring.version}</version>
</dependency>
<!-- spring web -->
<!-- spring webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${env.spring.version}</version>
</dependency>
<!-- spring webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${env.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${env.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${env.spring.version}</version>
</dependency>
<!-- RESTLET -->
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.spring</artifactId>
<version>${restlet-version}</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- Spring dependencies End -->
<!-- JPA / DB -->
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-all</artifactId>
<version>${openjpa-all.version}</version>
</dependency>
<!-- Dipendenze per JUnit test start -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- Dipendenze per JUnit test end -->
<!-- dipendenza logback per il logging -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${ch.qos.logback.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${ch.qos.logback.version}</version>
<!-- <scope>test</scope> -->
</dependency>
<!-- SLF4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<!-- dipendenza logback per il logging -->
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${javax.servlet.jstl.version}</version>
</dependency>
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${org.codehaus.jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${org.codehaus.jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${org.codehaus.jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${org.codehaus.jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>${org.codehaus.jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>${org.codehaus.jackson.version}</version>
</dependency>
<!-- dipendenze JAXB start -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb-api.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>${jaxb.impl.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version>${org.jvnet.jaxb2_commons.version}</version>
</dependency>
<!-- dipendenze JAXB end -->
<!-- Needed for PDF View -->
<!-- https://mvnrepository.com/artifact/com.lowagie/itext -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>${itext.pdf.version}</version>
<type>pom</type>
</dependency>
<!-- Needed for XLS View -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${apache.poi.microsoft.version}</version>
</dependency>
我已经设置了这个驼峰上下文属性:
<camelContext xmlns="http://camel.apache.org/schema/spring"
trace="#{config.camelTrace}" useMDCLogging="true" streamCache="true">
这是我的路线定义:
<route>
<from uri="direct:contactTheMovieDb" />
<to
uri="http4://api.themoviedb.org/3/movie/550?api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&bridgeEndpoint=true" />
<log message="contactTheMovieDb -> ${body}" loggingLevel="DEBUG"
logName="it.umberto" />
<!-- <setProperty propertyName="messageAsString"> -->
<!-- <simple>${body}</simple> -->
<!-- </setProperty> -->
<!-- <process ref="readBodyExchange" /> -->
<unmarshal>
<json library="Jackson" unmarshalTypeName="it.umberto.Bean.MappingBean.Movie" />
</unmarshal>
<process ref="printMovie" />
<!-- <log message="contactTheMovieDb INDENTATO -> ${body}" -->
<!-- loggingLevel="DEBUG" logName="it.umberto" /> -->
</route>
<route>
<from uri="restlet:/getMovie" />
<setHeader headerName="CamelHttpMethod">
<constant>GET</constant>
</setHeader>
<to uri="direct:contactTheMovieDb" />
<!-- <to uri="stream:out" /> -->
<log message="getMovie --> ${body}" loggingLevel="DEBUG" logName="it.umberto" />
</route>
如果我删除日志正文填充正文,但如果激活它我有 null 邮件正文
这是我的申请日志:
https://gist.github.com/JafferWilson/7035ec8bf5b8d6aad81e205d3969ebeb
P.S: 抱歉我的英语不好:(
答案 0 :(得分:0)
我解决了。
添加到camelContext streamCache = true(在camel 2.0之后默认禁用):
<camelContext xmlns="http://camel.apache.org/schema/spring"
trace="#{config.camelTrace}" useMDCLogging="true" streamCache="true">
并在阅读后添加正文:
LOG.info("................Processor ReadBodyExchange ...........START");
String body = exchange.getIn().getBody(String.class);
LOG.info(" ExchangeMessage="+body);
exchange.getIn().setBody(body);
LOG.info("................Processor ReadBodyExchange ...........END");
此致 翁