2011-08-11 20 views
10

Actualmente estoy trabajando en una aplicación de jersey con Jersey 1.8 junto con Guice 3.0 para DI para mi JPA. Esto funciona bastante bien con una cuestión importante, que yo no era capaz de superar:Guice + Jersey: Agregue todos los recursos y proveedores sin vincular a Jersey Servlet

tengo que añadir manualmente todas las clases de recursos Jersey a la JerseyServletModule usando 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); 

     } 
    }); 
} 

Me gustaría ser capaz de omite el uso de bind para cada recurso y proveedor y se encuentra en la jersey-guice doc a comment: http://jersey.java.net/nonav/apidocs/1.8/contribs/jersey-guice/com/sun/jersey/guice/spi/container/servlet/package-summary.html

Básicamente indica que se puede pasar el registro de los recursos de jersey al servlet de jersey. Sin embargo yo no era capaz de manejar esto utilizando dicho método:

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

Lamentablemente no pude conseguir más información sobre el proceso de registro de los recursos jersey.

Cualquier ayuda sería apreciada. ¡Por supuesto que puedo proporcionar información adicional, si es necesario! Gracias.

Respuesta

11

se convierte en bastante estándar que responder a mi propia pregunta, pero me pareció que la respuesta de un hilo Guice 2 pero afortunadamente trabaja con Guice 3 y 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"); 

Hay que ir.

¡No olvides pasar los parámetros Mapa a tu GuiceContainer.class!

+0

¡Gracias, realmente útil! Tuve el mismo problema. –

Cuestiones relacionadas