JAX-RS 2.0:如何注册Feature或ContextResolver以在Mapper中注册自定义JaxbAnnotationIntrospector内省

时间:2017-01-13 00:05:38

标签: json jackson jax-rs mapper

我使用以下命令在JAX-RS 2.0应用程序中正确注册了JacksonJaxbJsonProvider:

[x.set_index(['timestamp']) for x in [x1, x2, x3]]

现在我需要自定义JAX-RS资源中自己使用的Mapper,因为我需要添加SerializationFeature.FAIL_ON_EMPTY_BEANS。

我已经看过如何使用功能或自定义Contextresolver执行此操作的示例,但我知道如何将其添加到我在源代码中创建的Mapper但我无法将其添加到REST服务使用的Mapper中:

    public Set<Class<?>> getClasses() {
... classes.add(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider.class);
}

因为JAX-RS 2.0应用程序忽略了这些类。

如何在JAX-RS应用程序中添加Feature或ContextResolver以便识别它们?

1 个答案:

答案 0 :(得分:0)

您可以重用Jersey实现自定义应用程序。 More Info使用ContextResolver获取要使用的自定义ObjectMapper。

示例:

public class MyApplication extends ResourceConfig {
   public MyApplication() {
      /* packages that contains JAX-RS components, registers them to use also */
      packages("org.foo.rest;org.bar.rest");
      /* here register the provider */
      register(MapperProvider.class);
 }

}

MapperProvider类。

@Provider
public class MapperProvider implements ContextResolver<ObjectMapper> {

@Override
public ObjectMapper getContext(Class<?> arg0) {
   /* you can configure the mapper as you like */
   return new ObjectMapper()
            .registerModule(new JaxbAnnotationModule()
            .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false));
}