2011-09-17 18 views
8

मैं एक एंटरप्राइज़ प्रोजेक्ट पर काम कर रहा हूं जिसमें एक ईजेबी मॉड्यूल और ग्लासफ़िश v3.1, वेल्ड v1.1 और जर्सी पर चल रही एक वेब प्रोजेक्ट है। ईजेबी में मैंने एक इकाई वर्ग Manufacturer परिभाषित किया है और एक सत्र मुखौटा ManufacturerFacade उत्पन्न किया है।जर्सी (आरईएसटी) उप-संसाधन सीडीआई

वेब प्रोजेक्ट में मैं आरईएसटी के माध्यम से Manufacturer उदाहरणों का खुलासा करना चाहता हूं। ऐसा करने के लिए, मैंने निम्नलिखित संसाधन बनाए:

ManufacturersResource एक कंटेनर संसाधन है जो डेटाबेस में संग्रहीत सभी निर्माताओं की एक सूची देता है। यह ManufacturerFacade इंजेक्शन करके और findAll() विधि को कॉल करके ऐसा करता है। संक्षिप्त कोड:

@RequestScoped 
@Path("/manufacturer") 
public class ManufacturersResource { 

    @Inject 
    private ManufacturerFacade manufacturerFacade; 

    @GET 
    @Produces("application/xml") 
    public List<Manufacturer> getManufacturers() { 
     return manufacturerFacade.findAll(); 
    } 
} 

इस संसाधन भी एक उप संसाधन है:

@Path("{id}") 
public ManufacturerResource getManufacturer(@PathParam("id") String id) { 
    return ManufacturerResource.getInstance(id, manufacturerFacade); 
} 

ManufacturerFacade लग इस प्रकार है:

public class ManufacturerResource { 

    @Inject 
    private ManufacturerFacade manufacturerFacade; 

    private long id; 

    private ManufacturerResource(String id) { 
     this.id = Long.parseLong(id); 
    } 

    public static ManufacturerResource getInstance(String id,) { 
     return new ManufacturerResource(id); 
    } 

    @GET 
    @Produces("application/xml") 
    public Manufacturer getManufacturer() { 
     return manufacturerFacade.find(id); 
    } 

}

हम एक अलग वर्ग में हैं हालांकि, और ManufacturerResource ढांचे और वें द्वारा तत्काल नहीं किया जा रहा है हमारे पास ManufacturerFacade इंजेक्शन नहीं है।

मैं जानता हूँ कि मैं बस निर्माता के माध्यम से आइटम संसाधन (ManufacturerResource) के लिए कंटेनर संसाधन (ManufacturersResource) से मुखौटा पारित लेकिन किसी भी तरह डि रूप में अच्छी तरह उन पर काम या निर्माता एक के माध्यम से गुजर रहा है पाने के लिए यह संभव है सकते हैं यहाँ बिल्कुल ठीक समाधान?

धन्यवाद!

+0

मुझे लगता है कि वर्ग 'निर्माता संसाधन' स्पष्ट रूप से 'निर्माता संसाधन नियंत्रण नियंत्रक' के रूप में नामित किया जाएगा। – stratwine

+0

आप सही हैं। मैं बस अपने पैरों को आरईएसटी में गीला कर रहा हूं इसलिए मैं अभी तक रिफैक्टरिंग नहीं कर रहा हूं, लेकिन मैं करूँगा। सलाह के लिये धन्यवाद! – Laurens

उत्तर

14

आप इसके लिए संसाधन कॉन्टैक्ट का उपयोग करने और एक सेटटर का उपयोग कर आईडी पास करने में सक्षम होना चाहिए। अगर यह काम नहीं करता है तो कृपया एक बग फाइल करें (http://java.net/jira/browse/JERSEY)।

@Context 
private ResourceContext resourceContext; 

@Path("{id}") 
public ManufacturerResource getManufacturer(@PathParam("id") String id) { 
    ManufacturerResource r = resourceContext.getResource(ManufacturerResource.class); 
    r.setId(id); 
    return r; 
} 
+0

हाय मार्टिन, लाखों धन्यवाद! वह बेकार ढंग से काम कर रहा है। मुझे यह जोड़ना चाहिए कि आइटम ('निर्माता संसाधन ') को यह सुनिश्चित करने के लिए' @ RequestScoped' होना चाहिए था, लेकिन अब यह है! – Laurens

संबंधित मुद्दे