Guice + Jersey: добавьте все ресурсы и поставщиков без привязки в сервлет Jersey - PullRequest
10 голосов
/ 11 августа 2011

В настоящее время я работаю над приложением jersey, используя Jersey 1.8 в сочетании с Guice 3.0 для DI для моего JPA. Это хорошо работает с одной серьезной проблемой, которую я не смог преодолеть:

Мне нужно вручную добавить все классы ресурсов Джерси в модуль 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);

        }
    });
}

Я хотел бы иметь возможность не использовать bind для каждого отдельного ресурса и провайдера, и нашел в документе jersey-guice замечание: http://jersey.java.net/nonav/apidocs/1.8/contribs/jersey-guice/com/sun/jersey/guice/spi/container/servlet/package-summary.html

В основном говорится, что можно передать регистрацию ресурсов джерси сервлету джерси. Однако я не смог справиться с этим, используя указанный метод:

@Override
     protected Injector getInjector() {
         return Guice.createInjector(new JerseyServletModule() {

             @Override
             protected void configureServlets() {
                 bind(GuiceResource.class);

                 Map<String, String> params = new HashMap<String, String>();
                 params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "unbound");
                 serve("/*").with(GuiceContainer.class, params);
             }
         }
     });

К сожалению, я не смог получить больше информации о процессе регистрации ресурсов джерси.

Любая помощь будет оценена. Конечно, я могу предоставить дополнительную информацию, если это необходимо! Спасибо.

1 Ответ

11 голосов
/ 12 августа 2011

Становится довольно стандартным, что я отвечаю на свой собственный вопрос, но я нашел ответ из ветки Guice 2, но, к счастью, он работает с Guice 3 и Jersey 1.8

/*
* The following line will scan ausbdsoccer.server.resources package for Jersey Resources
*/
params.put("com.sun.jersey.config.property.packages","ausbdsoccer.server.resources");

Вот, пожалуйста.

Не забудьте передать карту параметров в свой класс GuiceContainer.class!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...