THX*_*138 4 web-services jax-rs thread-safety jackson jersey-2.0
我希望能够添加一个请求范围的属性(一个 JAX-RS,ContainerRequestContext因为我宁愿使用 Jackson 将我的参数转换为对象,而不是 JAX-RS 的构思和笨拙ParameterConverterProviders)到 aDeserializationContext以便它可以从内部获取一个JsonDeserializer。我必须调用convertValue()而不是简单地readValue()(不处理实际的 JSON),所以我无法ObjectReader在每个线程中创建一个,除非我愿意先将我的映射序列化为一个 JSON 字符串,然后再读回来 - 这将是非常低效的。
我希望能够以按请求的方式完成以下任务:
ObjectMapper om = new ObjectMapper();
//in request-scoped context:
om.getDeserializationContext().setAttribute("requestContext",containerRequestContext)
Map<String,Object> mapOfRequestParameters = ...
BeanOfVastImportance bean = om.convertValue(mapOfRequestParameters,BeanOfVastImportance.class)
Run Code Online (Sandbox Code Playgroud)
如何在不需要为每个单独的请求线程创建新的 ObjectMapper 的大量多余开销的情况下实现这一点?
小智 6
这可以通过以下方式实现:
objectMapper.reader().forType(Request.class)
.withAttribute("key", "value").readValue<Request>("source")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |