Как зацепить Джексона ObjectMapper с Guice / Джерси

Я могу'похоже, что мой модуль Jackson ObjectMapper зарегистрирован правильно.

используя стек Guice + Jersey + Jackson (FasterXML).

Мы следили, как настроить ObjectMapper на основе различных вопросов здесь. В частности, у меня объявлен ContextResolver, помеченный как @ javax.ws.rs.ext.Provider и @ javax.inject.Singleton.

У меня есть GuiceServletContextListener по направлениям:

@Override
protected Injector getInjector() {

     Injector injector = Guice.createInjector(new DBModule(dataSource),
            new ServletModule()
            {
                @Override
                protected void configureServlets() {


                    // Mapper
                    bind(JacksonOMP.class).asEagerSingleton();

                    // ... 

                    Map initParams = new HashMap();
                    initParams.put("com.sun.jersey.config.feature.Trace",
                            "true");
                    initParams.put("com.sun.jersey.api.json.POJOMappingFeature", "true");

                    serve("/services/*").with(
                            GuiceContainer.class,
                            initParams);
                }
            });

    return injector;
}

Картограф определен

import javax.inject.Singleton;
import javax.ws.rs.Produces;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

@Provider
@Singleton
@Produces
public class JacksonOMP implements ContextResolver {

  @Override
  public ObjectMapper getContext(Class aClass) {
    final ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new Hibernate4Module());
    return mapper;
  }
}

Однако - с одной только этой конфигурацией getContext () никогда не вызывается, поэтому преобразователь никогда не регистрируется. Я'Я застрял в типичном обличье - аннотации-загадка, где этопрактически не прослеживается до того, что яЯ действительно должен был делать. Пользователи Spring просто сообщают о регистрации компонента, а контейнер просто забирает его.

это ответ говорит о переопределении моей собственной реализации javax.ws.rs.core.Application. Тем не менее, это выглядит запрограммированным в имплементации GuiceContainer в виде трикотажа с именем DefaultResourceConfig ():

@Override
protected ResourceConfig getDefaultResourceConfig(Map props,
        WebConfig webConfig) throws ServletException {
    return new DefaultResourceConfig();
}

Я должен подкласс GuiceContainer здесь? Или есть какая-то другая волшебная аннотация, которую ям отсутствует?

Кажется, это довольно распространенное желание - яЯ удивлен тем, как трудно этодоказывает, что делает с этой комбинацией хитрости.

Ответы на вопрос(1)

Ваш ответ на вопрос