我们正在使用IBM捆绑的Apache Wink为我们的应用程序提供JAXRS端点.我们正在编写Websphere 8.5.5.由于我们符合servlet 3.0,因此我们使用"编程"方式配置JaxRS应用程序,这意味着web.xml中没有条目,我们依赖类扫描来注释jax rs资源.一般来说它工作正常.
@ApplicationPath("/api/v1/")
public class MyApplication extends Application{
Run Code Online (Sandbox Code Playgroud)
这个版本的Websphere和Apache Wink一起使用Jackson 1.6.x进行JSON de/serialization,一般来说效果很好.我们希望改变Object Mapper的一些默认值
因此,我们定义了一个客户上下文解析器,只需更改一些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);
Run Code Online (Sandbox Code Playgroud)
在JAX-RS调用期间,我们可以看到容器注册了新的Provider,没有错误
问题是,配置没有"跟随",从日志中我可以看到Wink引擎正在查找WinkJacksonProvider,而这反过来又回复了一个遵循Jackson(s)默认值的JacksonProvider?
有没有办法只更改此默认值?
我试图更改此处所示的Application对象的实现,以便以编程方式配置Providers,但它不起作用.
http://www.ibm.com/developerworks/java/library/wa-aj-jackson/index.html
任何提示或提示?
非常感谢