2011-05-31 61 views
5

我試圖提供一個用Java編程的REST/XML Api。應用程序被賦予一個參數,然後通過HTTP返回XML內容。Java中的REST/XML Api

在PHP中,通過使用我的api提供參數& string = helloworld的rest_api.php文件來解決這個問題,然後我讀取這個字符串,進行計算或搜索,修改數據來滿足我的XML模式,並回復這個數據,然後用HTTP響應發回它。

如何正確使用Java?

回答

7

兩個Java擴展在演唱會精彩爲此繼續努力:

  • JAX-RS(參考實現新澤西州)
  • JAXB(參考實現地鐵)

兩者都包含在Glassfish的Java EE 5和6參考實現。

總之,JAX-RS允許通過添加@GET@POST@PUT@DELETE註釋中的一個聲明一個普通方法爲web服務。 JAX-RS還具有用於自動分析路徑和URL查詢參數的註釋,並且在大多數情況下它負責構建適當的響應對象。

JAXB通過添加@XmlRootElement@XmlElement@XmlID等。當用JAX-RS合併,編組和解組用戶是透明的自動轉換平原對象(PO​​JO)和XML。

例如:

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

生成的XML將是這個樣子:

<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 – 2011-05-31 15:07:54

2

RESTlet框架應該是一個非常好的開始

3

我個人都用了,

,我既可以推薦。我發現Restlet比較容易開始,但澤西提供了更好的集成可能性(至少對於我如何使用它)。

1

我沒有嘗試過的Restlet或球衣,但我已經很高興與Apache Wink。它在我們的生產環境中運行良好,沒有問題。