2011-05-31 11 views
5

के साथ एक्सएमएल एपीआई मैं जावा में प्रोग्राम किया गया एक आरईएसटी/एक्सएमएल एपीआई प्रदान करने की कोशिश कर रहा हूं। एप्लिकेशन को पैरामीटर दिया गया है और फिर HTTP के माध्यम से एक्सएमएल सामग्री वापस कर देगा।आरईएसटी/जावा

PHP में जिस तरह से मैं एक rest_api.php फ़ाइल रख कर इसे हल करूँगा जो पैरामीटर & स्ट्रिंग = helloworld मेरे एपीआई का उपयोग कर एप्लिकेशन द्वारा प्रदान किया गया है, तो मैं इस स्ट्रिंग को पढ़ता हूं, गणना करता हूं या इसके साथ खोज करता हूं, संशोधित करता हूं मेरे एक्सएमएल स्कीमा को पूरा करने के लिए डेटा और इस डेटा को एक गूंज जवाब दें जो इसे HTTP प्रतिक्रिया के साथ वापस भेजता है।

मैं जावा के साथ इसे ठीक से कैसे करूं?

उत्तर

7

दो जावा एक्सटेंशन यह अंत करने के लिए संगीत कार्यक्रम में शानदार काम करते हैं:

  • JAX-RS (संदर्भ कार्यान्वयन जर्सी)
  • JAXB (संदर्भ कार्यान्वयन मेट्रो)

दोनों Glassfish जावा ईई के साथ शामिल हैं 5 और 6 संदर्भ कार्यान्वयन।

छोटा है, JAX-रुपये में आप @GET, @POST, @PUT या @DELETE एनोटेशन में से एक को जोड़कर एक वेब सेवा के रूप में एक सादे प्रणाली की घोषणा कर सकते हैं। जेएक्स-आरएस में पथ और यूआरएल क्वेरी पैरामीटर के स्वचालित पार्सिंग के लिए एनोटेशन भी हैं, और ज्यादातर मामलों में उचित प्रतिक्रिया ऑब्जेक्ट्स बनाने का ख्याल रखता है।

JAXB स्वचालित रूप से @XmlRootElement, @XmlElement, @XmlID, आदि जोड़ने जब JAX-रुपये के साथ संयुक्त, वास्ते और unmarshalling पारदर्शी रूप से किया जाता है के द्वारा करने के लिए और एक्सएमएल से सादे वस्तुओं (POJOs) अनुवाद करता है।

उदाहरण के लिए:

// POJO with JAXB annotations 

@XmlRootElement(name = "sensor") 
public class MyObject { 
    @XmlID 
    @XmlElement 
    private String id; 

    @XmlAttribute 
    private String name; 

    @XmlElement(name = "sensor-value") 
    private Integer value; 

    @XmlTransient // don't translate to XML 
    private Double computedValue; 

    // ...getters and setters 
} 


// POJO with REST interface 

@Path("/mywebservice") 
public class MyWebService { 
    @EJB 
    MySensorController controller; 

    @GET 
    @Produces("application/xml") 
    public MyObject getCurrentSensorValue(@QueryParam("ID") String id) { 
     // automatic unmarshalling from MyObject to XML 
     return controller.getSensorValue(id); 
    } 
} 

जिसके परिणामस्वरूप एक्सएमएल कुछ इस तरह दिखेगा:

<sensor name="foo"> 
    <id>123</id> 
    <sensor-value>42</sensor-value> 
</sensor> 
+0

+1 - एक पूर्ण उदाहरण के लिए देखें: http://bdoughan.blogspot.com/2010/08/creating-restful-web-service-part-45.html –

2

RESTlet ढांचा एक बहुत अच्छी शुरुआत

3

मैं व्यक्तिगत रूप से दोनों का इस्तेमाल किया है,

  • Restlet ढांचे के साथ-साथ
  • अपाचे Jersey

होना चाहिए जो मैं दोनों कर सकते हैं सलाह देते हैं। मैंने रीस्टलेट को शुरू करने के लिए एक टैड आसान पाया, लेकिन जर्सी बेहतर एकीकरण संभावनाएं प्रदान करता है (कम से कम मैंने इसका उपयोग कैसे किया)।

1

मैं Restlet या जर्सी प्रयास नहीं किया है, लेकिन मैं Apache Wink से बहुत खुश किया गया है। यह बिना किसी मुद्दे के हमारे उत्पादन पर्यावरण में अच्छा काम किया है।

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

  • कोई संबंधित समस्या नहीं^_^