GuideWire集成网关应用程序,使用Apache Camel4.4.4
如何在应用程序中使用骆驼路由使用的Jackson ObjectMapper在哪里配置?该路由使用的默认对象mapper不包含使用@Inject Annotation提供的ObjectMapper时配置和可用的预期模块。
@Inject
private ObjectMapper jacksonObjectMapper;
这提供了来自Camel-Jackson的对象映射器,并注册了模块
Rute看起来像:
from("direct:policy-search")
.routeId("pcPolicySearch")
.process(this::doPCSearch) //read parameters and set exchange body
.marshal().json(JsonLibrary.Jackson) //transform body into json string
在路由configure()块中,我尝试为Exchange设置全局选项,但没有效果:当路由运行时,它仍然具有没有模块的默认映射器。
getCamelContext().getGlobalOptions().put("useDefaultObjectMapper", "false");
getCamelContext().getGlobalOptions().put("autoDiscoverObjectMapper", "true");
我尝试添加带有@configure注释的类,但永远不会调用。
i我尝试添加一个应用程序。camel.component.jackson.useDefaultObjectMapper=false
camel.component.jackson.autoDiscoverObjectMapper=true
i尝试在gw-application.yaml中设置相同的值,但是这些值未出现,duestefoaultObjectMapper在dataformat上始终为true
camel:
component:
jackson:
use-default-object-mapper: false
auto-discover-object-mapper: true
I从交易所抓住了注册的对象apper,它是我想要的,但是当路由执行dataformat上的objectMapper时,没有模块。
Map<String, ObjectMapper> s=getCamelContext().getRegistry().findByTypeWithName(ObjectMapper.class);
您的Dopcsearch方法是什么样的?通常,我在路由定义中看到的是.process()调用实例处理器(实现处理器接口的类),在那里您可以将ObjectMapper定义为类变量,并将其定义在Process()方法()方法中.