Question

Je dispose actuellement d'une application GWT qui utilise RequestBuilde pour envoyer des messages à un servlet que j'ai (en utilisant POST et GET ) et à mon servlet (dans doPost et doGet ) " pauses " la demande (ceci est fait en utilisant Servlets 3.0 spec) et l'ajoute à une file d'attente.
De plus j'ai un Un fil de démon qui s’exécute en arrière-plan et qui "joue" la demande quand il y a de nouvelles données.
Cela fonctionne très bien pour moi, mis à part le fait que j'envoie cordes pour l'instant et je voudrais utiliser le mécanisme RPC pour envoyer Objets.
Ma question est la suivante:
Si je crée ma classe myServiceImpl qui s'étend RemoteServiceServlet comment dois-je gérer le doPost et le doGet ?
Je dois suspendre ma demande pour utiliser le support asynchrone, où cela devrait-il être accompli? Je pensais peut-être appeler la méthode this.getThreadLocalRequest () dans ma méthode RPC dans la classe myServiceImpl , mais je ne suis pas sûr de la sagesse que cela prendra.
Je suis ne pas bien sûr, je comprends même comment GWT gère l'appel du côté client de cette interface asynchrone. Appelle-t-il par hasard doGet , par exemple, du servlet et s'assure qu'il appelle la méthode RPC requise?
Je suis désolé si j'ai fait des dégâts, c'est juste que je ne peux pas en trouver plus informations techniques détaillées sur le fonctionnement exact de cette entreprise RPC.
Apprécier n'importe quelle main prêteuse
Ittai

Était-ce utile?

La solution 2

Je pense que mon principal malentendu à l'époque était lié au fait que GWT RPC s'appuie sur le mécanisme de servlet (en interne). Il était donc impossible à l'époque d'utiliser ce mécanisme avec des servlets asynchrones, car GWT RPC était impossible. construit sur les servlets 2.5 (à nouveau, à l'époque).

Autres conseils

Pour comprendre RPC, oubliez POST et GET, cela fonctionne différemment (c’est-à-dire du point de vue de la programmation. En interne, il l’utilise, mais vous ne le voyez pas ou n’avez pas besoin de le comprendre, à moins de vouloir faire quelque chose d’exotique). Les documents GWT constituent un bon point de départ sur RPC: http://code.google. .com / webtoolkit / tutorials / 1.6 / RPC.html

Pour vous donner un résumé. Lorsque vous utilisez RPC, votre servlet myServiceImpl doit implémenter les méthodes d'une interface nommée myService , en plus de l'extension du RemoveServiceServlet . Les méthodes obtiennent comme arguments les données que vous voulez envoyer au serveur.

À côté de l'interface myService , vous devez créer une interface myServiceAsync (les deux interfaces doivent se trouver dans un sous-package client). Cette interface myServiceAsync doit contenir les mêmes méthodes que l'interface myService sauf que chaque méthode renvoie void et possède un dernier argument supplémentaire AsyncCallback callback .

Dans votre client, vous devez utiliser GWT pour générer le RPC via GWT.create (voir la documentation pour plus de détails.

Pour utiliser RPC, appelez les méthodes de l'interface myServiceAsync dans votre code client et GWT se chargera de l'envoyer au servlet. La servlet appellera ensuite la méthode correspondante avec les arguments que vous avez transmis au client. Ceci est fait asynchrone. Ainsi, le client revient directement de l'appel.

Lorsque le serveur renvoie le résultat, le rappel que vous avez passé myServiceAsync est utilisé ou OnError ou OnSuccess est appelé. OnError si la méthode côté serveur a généré une erreur, sinon OnSuccess . OnSuccess aura comme argument la valeur de retour de ce que vous avez renvoyé dans la méthode implémentée par votre servlet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top