Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Kotlin Camel Quarkus似乎没有使用Quarkus对象映射器_Kotlin_Jackson_Apache Camel_Quarkus_Objectmapper - Fatal编程技术网

Kotlin Camel Quarkus似乎没有使用Quarkus对象映射器

Kotlin Camel Quarkus似乎没有使用Quarkus对象映射器,kotlin,jackson,apache-camel,quarkus,objectmapper,Kotlin,Jackson,Apache Camel,Quarkus,Objectmapper,我有一个Camel-ReST路由,它使用Jackson将集合转换为JSON,但是当集合中的对象包含LocalDate时,它会抛出一个错误(没有LocalDate,一切都可以正常工作) com.fasterxml.jackson.databind.exc.invalidDefinition异常:默认情况下不支持Java 8日期/时间类型Java.time.LocalDate:添加模块“com.fasterxml.jackson.datatype:jackson-datatype-jsr310” 我

我有一个Camel-ReST路由,它使用Jackson将集合转换为JSON,但是当集合中的对象包含LocalDate时,它会抛出一个错误(没有LocalDate,一切都可以正常工作)

com.fasterxml.jackson.databind.exc.invalidDefinition异常:默认情况下不支持Java 8日期/时间类型
Java.time.LocalDate
:添加模块“com.fasterxml.jackson.datatype:jackson-datatype-jsr310”

我添加了一个类来定制Quarkus ObjectMapper:


@独生子女
类MyObjectMapperCustomizer:ObjectMapperCustomizer{
覆盖自定义(objectMapper:objectMapper){
registerModule(JavaTimeModule())
}
}
但Camel似乎没有使用这个ObjectMapper,我可以在VisualVM中看到ObjectMapper类有3个实例

引发异常的Camel rest端点是:

.get().products(MediaType.APPLICATION_JSON).route()
.bean(svc.getAllTradeList()).marshal().json(JsonLibrary.Jackson.endRest())
getAllTradeList只是将exchange主体设置为交易对象列表,而交易对象本身非常基本:

@RegisterForReflection
数据类贸易(
valid:String,
val说明:字符串,
val名义值:双倍,
val tradeDate:LocalDate
)
我看不到一个明显的方法让Camel使用我正在定制的Quarkus ObjectMapper,或者定制Camel似乎正在创建的对象映射器


如果有多个对象映射器实例,则camel不知道选择哪个实例,因此要使用它,您必须明确配置camel应使用的对象:

如果来自quarkus的对象映射器已命名,则可以执行以下操作:

.marshal()
    .json()
        .libray(JsonLibrary.Jackson)
        .objectMapper("name-of-the-object-mapper") 
如果没有,您可以创建JacksonDataFormat的实例并对其进行配置:

JacksonDataFormat df = new JacksonDataFormat();
df.setObjectMapper(mapper) // use CDI to get a referece
然后直接使用它:

.marshal(mapper)

如果存在多个对象映射器实例,则camel不知道选择哪个实例,因此要使用它,必须明确配置camel应使用的对象:

如果来自quarkus的对象映射器已命名,则可以执行以下操作:

.marshal()
    .json()
        .libray(JsonLibrary.Jackson)
        .objectMapper("name-of-the-object-mapper") 
如果没有,您可以创建JacksonDataFormat的实例并对其进行配置:

JacksonDataFormat df = new JacksonDataFormat();
df.setObjectMapper(mapper) // use CDI to get a referece
然后直接使用它:

.marshal(mapper)