Dos Java funcionan de maravilla en concierto con este fin:
- JAX-RS (Jersey implementación de referencia)
- JAXB (implementación de referencia de metro)
Ambos están incluidos con el Glassfish Java EE 5 y 6 implementación de referencia.
En JAX-RS, cortos permite declarar un método sencillo como un servicio web mediante la adición de uno de los @GET
, @POST
, @PUT
o @DELETE
anotaciones. JAX-RS también tiene anotaciones para el análisis automático de los parámetros de búsqueda de ruta y URL, y se encarga de construir los objetos de respuesta adecuados en la mayoría de los casos.
JAXB traduce automáticamente los objetos planos (POJO) desde y hacia XML mediante la adición de @XmlRootElement
, @XmlElement
, @XmlID
, etc. Cuando se combina con JAX-RS, de clasificación y unmarshalling se hace transparente.
Por ejemplo:
// 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);
}
}
El XML resultante será algo como esto:
<sensor name="foo">
<id>123</id>
<sensor-value>42</sensor-value>
</sensor>
+1 - Para ver un ejemplo completo visite: http://bdoughan.blogspot.com/2010/08/creating-restful-web-service-part-45.html –