我们正在使用 IBM(s) 捆绑的 Apache Wink 为我们的应用程序提供 JAXRS 端点。我们正在编写 Websphere 8.5.5。由于我们符合 servlet 3.0,我们使用“程序化”方式配置 JaxRS 应用程序,这意味着 web.xml 中没有条目,我们依赖于类扫描来查找带注释的 jax rs 资源。一般来说,它工作正常。
@ApplicationPath("/api/v1/")
public class MyApplication extends Application{
此版本的 Websphere 与 Apache Wink 一起使用 Jackson 1.6.x 进行 JSON 反序列化,并且通常运行良好。我们希望更改对象映射器的一些默认值
所以我们定义了一个客户上下文解析器,只需要改变一些 se/deserialzation 属性。
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJackssonConverter implements ContextResolver<ObjectMapper> {
final ObjectMapper defaultObjectMapper;
public AibasJackssonConverter() {
defaultObjectMapper = createDefaultMapper();
}
...
mapper.getSerializationConfig().set(SerializationConfig.Feature.INDENT_OUTPUT, true);
在 JAX-RS 调用期间,我们可以看到容器注册了新的 Provider,没有错误
问题是,配置不是“遵循”的,从日志中我可以看到 Wink 引擎正在查找 WinkJacksonProvider,这反过来..返回一个遵循 Jackson(s) 默认值的 JacksonProvider?
有没有办法改变这个默认值?
我已尝试按照此处所示更改 Application 对象的实现,以便以编程方式配置提供程序,但它不起作用。
http://www.ibm.com/developerworks/java/library/wa-aj-jackson/index.html
任何提示或提示?
非常感谢