2009-09-30 13 views
28

¿Cuáles son los mejores marcos para implementar marcos REST de cliente y servidor en Java? He estado luchando un poco para encontrar una solución fácil de usar.Marcos más fáciles de implementar servicios web REST de Java

Actualización: Tanto Jersey como Restlet parecen ser buenas opciones. Probablemente usemos Restlet, pero experimentaremos con ambos.

+0

http://meta.stackexchange.com/questions/71068/a-few-possible-duplicate-questions-about-java-rest-what-should-we-do – ripper234

Respuesta

18

Restlet suena como tiene que ofrecer lo que estás buscando:

  • Soporte para el cliente y el servidor (en una API relativamente simétrica)
  • url inteligente vinculante
  • tipo mime entendimiento (dada aceptadas tipos de mimo, pedirá a sus recursos su representación en ese tipo)
  • Admite las anotaciones JAX-RS (al igual que Jersey)
+3

+1 He tenido excelentes resultados con Restlet en una gran aplicación de producción. –

23

Jersey es realmente fácil para ambos. Para escribir servicios web, utiliza anotaciones:

@Path("/helloworld") 
public class HelloWorldResource { 

    // The Java method will process HTTP GET requests 
    @GET 
    // The Java method will produce content identified by the MIME Media 
    // type "text/plain" 
    @Produces("text/plain") 
    public String helloWorld() { 
     // Return some cliched textual content 
     return "Hello World"; 
    } 
} 

Para un cliente:

Client client = Client.create(); 
WebResource webResource = client.resource("http://localhost:8080/helloworld"); 
String s = webResource.get(String.class); 
System.out.println(s); // prints Hello World 
+1

+1 para Jersey, la implementación de referencia JAX-RS (JSR 311). También eche un vistazo a http://java.sun.com/javaone/2009/articles/gen_restful.jsp –

3

Restlet también admite anotaciones en su versión 2.0, tanto en el cliente y el servidor. La API de JAX-RS también se admite como una extensión.

Aquí está un ejemplo simple para el lado del servidor:

public class HelloWorldResource extends ServerResource { 

    @Get 
    public String represent() { 
     return "hello, world"; 
    } 

} 

En el lado del cliente:

// Outputting the content of a Web page 
new ClientResource("http://www.restlet.org").get().write(System.out); 

Para más documentación, check this page.

+0

Restlet parece prometedor, pero la documentación es decepcionante. – deamon

+0

El libro "Restlet en acción" será publicado por Manning en septiembre de 2012. Tiene una cobertura integral. A continuación, mejoraremos el tutorial y Javadocs (versiones 2.2 y 3.0) –

2

Hay la nueva biblioteca RESTEasy de JBoss. Parece estar en rápido desarrollo desde su lanzamiento inicial. No tengo idea si es bueno; está en mi lista de 'verifíquelo'.

0

puedo recomendar Apache guiño, un nuevo marco todavía en el modo de incubación, pero la calidad muy maduro y alta.

http://incubator.apache.org/wink/

Se implementa la especificación JAX-RS, que tiene tanto infraestructura de servidor de cliente & para el desarrollo REST. Apache está detrás de este proyecto - eso siempre es una buena señal (y una buena licencia :-))

Lo que más me gusta de este framework es la integración intuitiva con Spring, es muy útil si quieres que tu framework sea fácilmente configurable y extendido.

+0

BTW, Restlet también se distribuye bajo Apache Public License, además de otras opciones de licencia (EPL, LGPL 2.1 y 3.0, CDDL) :) –

0

ACTUALIZACIÓN: Xydra Restless ya no se mantiene +++ Si está utilizando Goolge App Engine antes de lanzar una característica de "reserva", puede considerar Xydra Restless que tiene pocas funciones pero se carga rápidamente.

1

Puede echar un vistazo a la implementación de CXF JAX-RS. Para obtener una lista completa de sus características, consulte el CXF web site for JAX-RS. La comunidad detrás del proyecto parece estar muy activa (julio de 2013). Una indicación de eso es la cantidad de mensajes por día en el CXF mailing lists.

-1

Mi favorita es la primavera MVC, tiene soporte para ambos, cliente y servidor lado ... Y tiene el apoyo de Android demasiado =)

Por ejemplo, se puede ver un ejemplo de primavera Android here

+0

El enlace de Android es al propio blog de Javier, que parece que ya no está en línea. –

Cuestiones relacionadas