2011-12-29 13 views
11

मेरे पास एक साधारण वसंत & जर्सी एप्लिकेशन है, जो एक साधारण संसाधन के माध्यम से अनुरोधों का उपभोग करने के लिए पूरी तरह से अच्छी तरह से काम करता है। हालांकि, मैं एक JSON प्रतिक्रिया वापस करना चाहता हूं - जिसमें ऑब्जेक्ट का एक सरल JSON क्रमबद्धता शामिल है। इसे प्राप्त करने के लिए, मैंने jersey-json के लिए एक मेवेन निर्भरता जोड़ा है। जैसे ही मैंने इस निर्भरता को जोड़ने के लिए, तथापि, मैं सर्वर स्टार्टअप पर यह त्रुटि प्राप्त:जर्सी नो वेब अनुप्रयोग प्रदाता मौजूद है जब जर्सी- * निर्भरता

com.sun.jersey.api.container.ContainerException: No WebApplication provider is present at  
    com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69) at 
    com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391) 

मैं पर वास्तव में क्या एक प्रदाता है पूरी तरह से स्पष्ट नहीं कर रहा हूँ, लेकिन मैं बहुत यकीन है कि वहाँ एक डिफ़ॉल्ट होना चाहिए हूँ एक मिला

पूर्णता के लिए, यहाँ मेरी संसाधन है:

@Path("/scan") 
@Resource 
@Component 
public class ScanResource { 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("/{barcode}") 
    public List<Scan> getScansForBarcode(@PathParam("barcode") Long barcode){ 
     ..snip.. 
     return results; 
    } 
} 

एक स्कैन वस्तु एक सरल इकाई बीन वस्तु है।

mvn निर्भरता है:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.11</version> 
</dependency> 

किसी को भी कारण है कि मैं No WebApplication provider is present अपवाद हो रही हो सकता है पता है? इस पर कोई विचार है कि मैं इसे कैसे हल कर सकता हूं?

धन्यवाद

+0

क्या आप वाकई classpath पर जर्सी-सर्वर के रूप में अच्छी तरह से है कि कर रहे हैं? याद रखें, सभी जर्सी मॉड्यूल में एक ही संस्करण होना चाहिए - यदि यह स्थिति पूरी नहीं हुई है तो वे एक-दूसरे प्रदाताओं को नहीं ढूंढ पाएंगे। –

+0

धन्यवाद पावेल - आगे बढ़ें और इस टिप्पणी को एक उत्तर दें, और मैं इसे स्वीकार करूंगा। – idbentley

+0

किया, धन्यवाद! :) –

उत्तर

23

साथ ही आप अपने classpath पर जर्सी-सर्वर जार की आवश्यकता है। और आपको यह सुनिश्चित करने की ज़रूरत है कि आपके सभी जार एक ही संस्करण से हैं, जर्सी रनटाइम अन्यथा प्रदान की गई कक्षाओं का उपयोग करने में सक्षम नहीं होगा।

इसके अतिरिक्त (संभवतः यहां प्रासंगिक नहीं है, लेकिन ..) मॉड्यूल संरचना में हालिया परिवर्तन है - सर्वलेट निर्भरता नए मॉड्यूल में अलग हो गई थी। तो यदि आप servlets का उपयोग कर रहे हैं, तो आप जर्सी-सर्वलेट पर निर्भर होना चाहेंगे (जो जर्सी-सर्वर पर निर्भर करता है)।

+2

धन्यवाद! मेरे पास एम्बेडेड neo4j सर्वर था, जो टूट गया जब मैंने एक निर्भरता जोड़ा जिसमें एक जेसन क्लाइंट शामिल था। उदाहरण के लिए - http://lists.neo4j.org/pipermail/user/2011-November/013368.html – Stewart

+0

इसके अलावा, जर्सी-सर्वलेट 1.17 एक ही समस्या उत्पन्न करता है। इसके बजाए 1.17.1 का प्रयोग करें। –

6

मुझे यह समस्या भी थी। इस मुद्दे को "जर्सी-जेसन" और "जर्सी-सर्वलेट" मैवेन निर्भरताओं के लिए एक ही संस्करण के द्वारा हल किया गया था।

पूर्व:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.13</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-servlet</artifactId> 
    <version>1.13</version> 
</dependency> 
+0

जर्सी-सर्वलेट का उपयोग करना मेरे उदाहरण के लिए पर्याप्त था, जर्सी-जेसन की कोई आवश्यकता नहीं थी। – Tires

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