2013-08-06 2 views
6

पर जर्सी 2.0 guice का उपयोग कैसे करें मैं ग्रिज़ली पर गुइस + जर्सी 2.0 का उपयोग करना चाहता हूं। इस How to use guice-servlet with Jersey 2.0? चर्चा के अनुसार वर्तमान में जर्सी 2 के लिए कोई प्रत्यक्ष गुइस एकीकरण नहीं है लेकिन इसे पुल के रूप में HK2 का उपयोग करके हासिल किया जा सकता है। मैंने गिथब https://github.com/piersy/jersey2-guice-example-with-test में नमूना प्रोजेक्ट की भी जांच की। यह परियोजना जेटी का उपयोग करके लागू की गई है।grizzly

लेकिन मेरी समस्या इसे ग्रिज़ली में लागू करना है। जेटी पर इसका उपयोग इस

@Inject 
public MyApplication(ServiceLocator serviceLocator) { 
    // Set package to look for resources in 
    packages("example.jersey"); 

    System.out.println("Registering injectables..."); 

    GuiceBridge.getGuiceBridge().initializeGuiceBridge(serviceLocator); 

    GuiceIntoHK2Bridge guiceBridge = serviceLocator.getService(GuiceIntoHK2Bridge.class); 
    guiceBridge.bridgeGuiceInjector(Main.injector); 

} 

ग्रिज़ली पर मेरी समस्या यह है कि इस सेवा को कैसे प्राप्त करें लोकेटर ऑब्जेक्ट?

धन्यवाद।

उत्तर

5

मैं नमूना यहाँ https://github.com/oleksiys/samples/tree/master/jersey2-guice-example-with-test

ग्रिजली प्रवर्तन कोड इस तरह दिखता है बनाया है:

final URI uri = UriBuilder.fromUri("http://127.0.0.1/") 
     .port(8080).build(); 

// Create HttpServer 
final HttpServer serverLocal = GrizzlyHttpServerFactory.createHttpServer(uri, false); 

// Create Web application context 
final WebappContext context = new WebappContext("Guice Webapp sample", ""); 

context.addListener(example.jersey.Main.class); 

// Initialize and register Jersey ServletContainer 
final ServletRegistration servletRegistration = 
     context.addServlet("ServletContainer", ServletContainer.class); 
servletRegistration.addMapping("/*"); 
servletRegistration.setInitParameter("javax.ws.rs.Application", 
     "example.jersey.MyApplication"); 

// Initialize and register GuiceFilter 
final FilterRegistration registration = 
     context.addFilter("GuiceFilter", GuiceFilter.class); 
registration.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), "/*"); 

context.deploy(serverLocal); 

serverLocal.start(); 
+0

'System.in.read()' जोड़ने के लिए था। धन्यवाद –

+0

यह नमूना सही काम करता है, लेकिन एक कंटेनर रिस्पॉन्सफ़िल्टर कैसे पंजीकृत करें? – javapenguin

1

जोड़ने निर्भरता

compile group: "org.glassfish.hk2", name: "guice-bridge", version: "2.4.0" 

बनाने सुविधा

public class GuiceFeature implements Feature { 

    @Override 
    public boolean configure(FeatureContext context) { 
     ServiceLocator serviceLocator = ServiceLocatorProvider.getServiceLocator(context); 

     GuiceBridge.getGuiceBridge().initializeGuiceBridge(serviceLocator); 
     GuiceIntoHK2Bridge guiceBridge = serviceLocator.getService(GuiceIntoHK2Bridge.class); 

     Injector injector = Guice.createInjector(new AbstractModule() { 
      @Override 
      protected void configure() { 
       bind(YYY.class).to(ZZZ.class); 
      } 
     }); 
     guiceBridge.bridgeGuiceInjector(injector); 

     return true; 
    } 
} 

रजिस्टर सुविधा

ResourceConfig resourceConfig = new ResourceConfig(); 
resourceConfig.register(GuiceFeature.class); 
संबंधित मुद्दे