2011-08-11 5 views
10

Obecnie pracuję nad aplikacją do koszulki z Jersey 1.8 w połączeniu z Guice 3.0 dla DI dla mojego JPA. To działa bardzo dobrze z jednym z głównych kwestii, która nie byłem w stanie przezwyciężyć:Guice + Jersey: Dodaj wszystkie zasoby i dostawców bez wiązania do Jersey Servlet

trzeba ręcznie dodać wszystkie klasy Jersey środki na JerseyServletModule użyciem wiąże:

@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); 

     } 
    }); 
} 

Chciałbym, aby móc ommit użycie bind dla każdego zasobu i dostawcy i znalezione w dokumencie jersey-guice uwaga: http://jersey.java.net/nonav/apidocs/1.8/contribs/jersey-guice/com/sun/jersey/guice/spi/container/servlet/package-summary.html

W zasadzie stwierdza, że ​​można przekazać rejestrację zasobów jersey do serwletu jersey. Jednak nie był w stanie poradzić sobie z tym za pomocą wspomnianej metody:

@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); 
      } 
     } 
    }); 

Niestety nie mogłem uzyskać więcej informacji na temat procesu rejestracji zasobów Jersey.

Każda pomoc zostanie doceniona. Oczywiście, jeśli to konieczne, mogę podać dodatkowe informacje! Dziękuję.

Odpowiedz

11

Staje się dość standardowe, że odpowiedziałeś na moje własne pytanie, ale znalazłem odpowiedź z Guice 2 Temat ale na szczęście pracuje z Guice 3 i 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"); 

proszę.

Nie zapomnij przekazać mapy mapy do GuiceContainer.class!

+0

Dzięki, bardzo pomocne! Miałem ten sam problem. –