Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Apache camel与Spring DSL封送到json问题_Spring Boot_Apache Camel_Spring Dsl - Fatal编程技术网

Spring boot Apache camel与Spring DSL封送到json问题

Spring boot Apache camel与Spring DSL封送到json问题,spring-boot,apache-camel,spring-dsl,Spring Boot,Apache Camel,Spring Dsl,我有以下配置 <dataFormats> <json id="orderModel" library="Jackson" objectMapper="com.camel.CustomObjectMapper" unmarshalTypeName="com.orders.OrderModel"/> <json id="salesOrder" library="Jackson" objectMapper="co

我有以下配置

<dataFormats>
        <json id="orderModel" library="Jackson" objectMapper="com.camel.CustomObjectMapper"
              unmarshalTypeName="com.orders.OrderModel"/>
        <json id="salesOrder" library="Jackson" objectMapper="com.camel.CustomObjectMapper"
              unmarshalTypeName="com.camel.model.salesorder.SalesOrder"/>
</dataFormats>

<route id="orderTranslateToSalesOrder">
        <from ref="orderPlaced"/>
        <unmarshal ref="orderModel" />
        <process ref="customerProcessor" />
        <process ref="salesOrderConverter"/>
        <marshal ref="salesOrder"/>
        <inOnly ref="orderCreate" />
        <process ref="history"/>
</route>

如果您的
ExchangePattern
设置为
InOnly
(看起来是这样的),则exchange的外部部分将被丢弃

改变

exchange.getOut().setHeaders(exchange.getIn().getHeaders());
exchange.getOut().setBody(salesOrder, SalesOrder.class);
为此:

exchange.getIn().setBody(salesOrder, SalesOrder.class);
这样,您也不必从部件中复制标题,因为它们已经存在了


您可以阅读有关如何以及何时使用getIn/getOut的更多信息,因为您尚未在pojo中映射此字段,因此无法识别字段“SalesOrder”。如果您不想映射,那么还应该在pojo中包含注释@JsonIgnore

谢谢您提供的信息,我尝试了
exchange.getIn().setBody(salesOrder,salesOrder.class)但仍然存在相同的问题
exchange.getIn().setBody(salesOrder, SalesOrder.class);