2009-09-30 4 views
28

Welche sind die besten Frameworks für die Implementierung von sowohl Client- als auch Server-REST-Frameworks in Java? Ich habe ein wenig gekämpft, um eine einfach zu bedienende Lösung zu finden.Einfachste Frameworks zur Implementierung von Java REST-Webservices

Update: Sowohl Jersey als auch Restlet scheinen gute Optionen zu sein. Wir werden wahrscheinlich Restlet verwenden, aber wir werden mit beiden experimentieren.

+0

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

Antwort

18

Restlet klingt wie sollte es das, was Sie suchen:

  • Unterstützung für Client und Server (in einem relativ symmetrischen api)
  • Smart-URL Bindung
  • Verständnis Mime-Typ (Given akzeptiert Mime-Typen, es fragt Ihre Ressourcen für ihre Darstellung in diesem Typ)
  • Unterstützt JAX-RS Anmerkungen (wie Jersey)
+3

+1 Ich hatte ausgezeichnete Ergebnisse mit Restlet in einer großen Produktionsanwendung. –

23

Jersey ist wirklich einfach für beide. Um Web-Services zu schreiben, verwenden Sie Anmerkungen:

@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"; 
    } 
} 

Für einen Kunden:

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 für Jersey, die JAX-RS (JSR 311) Referenzimplementierung. Werfen Sie auch einen Blick auf http://java.sun.com/javaone/2009/articles/gen_restful.jsp –

3

Restlet auch unterstützen Anmerkungen in seiner Version 2.0 sowohl auf dem Client und Server-Seite. Die JAX-RS-API wird auch als Erweiterung unterstützt.

Hier ist ein einfaches Beispiel für die serverseitige:

public class HelloWorldResource extends ServerResource { 

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

} 

Auf der Client-Seite:

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

Für weitere Dokumentation, check this page.

+0

Restlet sieht vielversprechend aus, aber die Dokumentation ist enttäuschend. – deamon

+0

Das Buch "Restlet in Action" wird im September 2012 bei Manning erscheinen. Es hat eine umfassende Berichterstattung. Als nächstes werden wir das Tutorial und Javadocs (Versionen 2.2 und 3.0) verbessern –

2

Es gibt die neue RESTEasy-Bibliothek von JBoss. Es scheint sich seit seiner Einführung in einer rasanten Entwicklung zu befinden. Ich habe keine Ahnung, ob es gut ist. Es ist auf meiner "Check-out" -Liste.

0

Ich kann Apache Wink, einen neuen Rahmen noch in Inkubation Modus, aber sehr ausgereift und qualitativ hochwertige empfehlen.

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

Es implementiert die JAX-RS-Spezifikation, es hat sowohl Client & Server-Framework für REST-Entwicklung. Apache steht hinter diesem Projekt - das ist immer ein gutes Zeichen (und eine gute Lizenz :-))

Was ich am meisten an diesem Framework liebe, ist die intuitive Integration mit Spring, es ist sehr nützlich, wenn Sie Ihr Framework sein wollen einfach konfiguriert und erweitert.

+0

BTW, Restlet wird auch unter Apache Public License, zusätzlich mit anderen Lizenzoptionen (EPL, LGPL 2.1 und 3.0, CDDL) verteilt :) –

0

UPDATE: Xydra Restless ist nicht mehr gepflegt +++ Wenn Sie Goolge AppEngine verwenden, bevor sie eine "Reserve-Instanz" -Funktion freigeben, könnten Sie Xydra Restless in Erwägung ziehen, die wenige Funktionen hat, aber schnell lädt.

1

Sie können sich die CXF JAX-RS-Implementierung ansehen. Eine vollständige Liste der Funktionen finden Sie unter CXF web site for JAX-RS. Die Community hinter dem Projekt scheint sehr aktiv zu sein (Juli 2013). Ein Hinweis darauf ist die Anzahl der Nachrichten pro Tag in der CXF mailing lists.

-1

Mein Favorit ist Frühling MVC, Sie die Unterstützung für beide, Client- und Server-Seite ... Und du auch Android-Unterstützung haben =)

Zum Beispiel Sie ein Beispiel des Frühlings Android here

+0

Der Android-Link ist zu Javier's eigenen Blog, scheint das nicht mehr online zu sein. –