Kotlin Camel Quarkus似乎没有使用Quarkus对象映射器
我有一个Camel-ReST路由,它使用Jackson将集合转换为JSON,但是当集合中的对象包含LocalDate时,它会抛出一个错误(没有LocalDate,一切都可以正常工作) com.fasterxml.jackson.databind.exc.invalidDefinition异常:默认情况下不支持Java 8日期/时间类型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” 我
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)