В настоящее время я работаю над приложением для джерси, использующим Jersey 1.8 в сочетании с Guice 3.0 для DI для моего JPA. Это очень хорошо работает с одной серьезной проблемой, которую я не смог преодолеть:
Мне нужно вручную добавить все классы ресурсов Jersey в JerseyServletModule, используя bind:
@Override
protected Injector getInjector() {
return Guice.createInjector(new JerseyServletModule() {
@Override
protected void configureServlets() {
install(new JpaPersistModule("DBName"));
filter("/*").through(PersistFilter.class);
/* bind the REST resources and serve*/
bind(Hello.class);
serve("/*").with(GuiceContainer.class);
}
});
}
Я бы хотел отказаться от использования привязки для каждого отдельного ресурса и поставщика и в документе jersey-guice есть примечание: http://jersey.java.net/nonav/apidocs/1.8/contribs/jersey-guice/com/sun/jersey/guice/ spi / container / servlet / package-summary.html
В основном это означает, что можно передать регистрацию ресурсов jersey сервлету jersey. Однако я не смог справиться с этим с помощью указанного метода:
@Override
protected Injector getInjector() {
return Guice.createInjector(new JerseyServletModule() {
@Override
protected void configureServlets() {
bind(GuiceResource.class);
Map params = new HashMap();
params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "unbound");
serve("/*").with(GuiceContainer.class, params);
}
}
});
К сожалению, я не смог получить больше информации о процессе регистрации ресурсов майки.
Любая помощь будет принята с благодарностью. Конечно, при необходимости я могу предоставить дополнительную информацию! Спасибо.