Sind asynchrone RESTful-Webdienste möglich?
Lesen Erholsam Dokumentation, es nicht scheinen, wie ist es möglich, implementieren eine asynchrone Instanz, aber jemand kann es besser wissen.
Was ich hier meine ist, ich möchte das ausführen von service requests asynchron:
@Path("/helloworld", asyncSupported=true)
public class MyHelloWorldService {
...
}
Ich weiß asyncSupported
ist nicht definiert @Path
, aber ich bin auf der Suche nach etwas ähnliches @WebServlet
. Dann würde ich das gerne verwenden AsyncContext
Instanzen (oder etwas vergleichbares).
Ist das möglich?
Kommentar zu dem Problem
Warum nicht AJAX verwenden, um rufen Sie Ihren Erholsamen Methode asynchron?
@Der Da AsyncContext wurde implementiert, um zu lösen die übermäßige thread-per-request-Ausgabe im Servlet. Mit Ajax aufrufen, Erholsamen würde nicht dieses Problem angehen (auf der Serverseite). Die Idee/Lösung ist die Warteschlange Anforderungen für die Verarbeitung auf eine begrenzte Gruppe von threads (die ein bisschen wie Nginx).
Möchten Sie vielleicht Fragen, auf die java.net/projects/jersey/lists/users/archive - Liste. IIRC Jersey experimentierte mit futures vor einiger Zeit. Nicht sicher, ob das entwickelt.
Können Sie sich möglicherweise so etwas wie Apache ServiceMix für die inspiration.
Sind Sie Fragen sich, ob dies möglich ist, in Ihrer Bibliothek oder über den Umgang mit ungleichzeitigkeiten in REST-Schnittstellen im Allgemeinen?
InformationsquelleAutor der Frage JVerstry | 2011-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
RestEasy hat einige support -1 für es - mithilfe einer benutzerdefinierten annotation genannt
@Suspend
.Finden Sie hier:
http://docs.jboss.org/resteasy/docs/2.2.1.GA/userguide/html/Asynchronous_HTTP_Request_Processing.html
Gibt es auch ein framework/Bibliothek auf der Spitze Jersey genannt Atmosphäre jedoch, die möglicherweise overkill für deinen Anwendungsfall sein Fokus scheint auf der long-polling-client/server web-Anwendungen ( z.B. chats - https://github.com/Atmosphere/atmosphere )
[1] Die CDI-scope für deine Anfrage verloren geht in in dem thread, eigentlich führt die Logik. Finden Sie die RESTEasy-682 Thema für mehr Informationen. Dies ist ein problem, das nicht gelöst worden ist, indem jede REST-frameworks, die ich kenne, zu diesem Zeitpunkt[März 2014].
InformationsquelleAutor der Antwort Eike D
Es ist anscheinend möglich, mit CXF und Steg Fortsetzungen aber das scheint nur möglich zu sein, mit Steg, 6; Sie haben sich geändert in Steg 7 zu etwas, dass in der Servlet 3.0 Spezifikation, und ich weiß nicht, ob das unterstützt wird von CXF. Darüber hinaus Steg Fortsetzungen zu sein scheinen ein bisschen eine chaotisch-API, mit der eine Menge von manuellen Sachen also ich weiß nicht, wie einfach es ist, zum konvertieren des Codes.
Immer noch, etwas möglich zu sein scheint. Mit einem folgenden wind, und wenn Gott es will.
InformationsquelleAutor der Antwort Donal Fellows
Erholsamen spesification ist noch in den frühen Stadien seines Lebens. Aber dieses problem sollte als Teil 2. Client und Server.
Client:
Für die client-Seite die jüngsten änderungen an der im letzten Jahr als ausgereift. Und vor kurzem eine non-blocking client basiert auf Jeanfrancois Arcand umgesetzt wurde und schob repository. Es ist eine Erklärung,hier.
Server:
Für die server-Seite, es ist noch nicht ausgereift. Die Verabschiedung des neuen servlet-Spezifikation ist ziemlich langsam und als Entwickler erwarte ich JSR 339 zur Bewältigung dieser Probleme als gut. Und dies ist auch an der JSR spec klar mit diesen Sätzen.
Aber es gibt auch andere alternativen zu. Projekte wie Jetty sind die Bewältigung dieser Art von Problemen elegant wie in diesem Beispiel. Ich kann nur empfehlen Sie, um andere alternativen in Betracht ziehen, wie die community wächst.
InformationsquelleAutor der Antwort Cemo
Nun können Sie machen Asynchoronous RESTful Aufrufe mit JAX-RS 2.0 API, die Teil des kürzlich veröffentlichten Java-EE-7.0
http://www.slideshare.net/reza_rahman/jaxrs2?ref=
InformationsquelleAutor der Antwort V.Vidyasagar
Check-out Pubsubhubbub gefunden hier für ein Beispiel einer REST-basierten asynchronen Protokoll. Es basiert auf dem Atom Syndication format und ist viel einfacher als WS-* pub/sub-Mechanismen.
InformationsquelleAutor der Antwort Shawn H
Sie können auch versuchen, den Frühling Webflux die asynchrone und reaktiv zugleich. Dies ist jedoch nicht eine JAX-RS-Implementierung von Java EE.
InformationsquelleAutor der Antwort Piotr Gwiazda