2009-07-21 9 views
1

Je me demande comment utiliser les tampons google protocol pour accepter une requête et renvoyer une réponse à un client? Je pense à écrire une servlet qui va prendre une demande. La piste suivante est-elle la bonne façon d'implémenter ceci: 1. Avoir un fichier .proto qui est la définition du message pour la requête entrante. 2. Écrivez une servlet qui accepte cette requête, effectue diverses tâches comme l'interrogation de la base de données puis envoie une réponse. Cette réponse nécessitera-t-elle une définition de message .proto séparée avec tous les champs qui composent la réponse? 3. Le client va-t-il simplement appeler la méthode doGet() de ma servlet et passer la requête, il devrait alors retourner une réponse en tant qu'objet protobuff?Tampons de protocole Google et servlets

Toute suggestion ou idée sera très appréciée.

Répondre

-1

HI,

Je l'ai installé. J'ai fini par poster une requête http en tant que message à mon servlet. J'ai été en mesure de prendre le tampon de protocole de demande, lire la demande, faire un traitement, puis renvoyer une réponse. C'était vraiment très simple une fois que je l'ai fait fonctionner. Nous avons utilisé le fichier 1 .proto pour définir la structure du message de requête et de réponse.

+3

Je suis content que ça a marché mais ça n'explique pas comment. – Tarelli

+0

Il suffit de coller l'exemple de code de la servlet – kyunez

5

Généralement, vous souhaitez un message de demande et un message de réponse, oui. Vous voudrez probablement aussi un nom de méthode pour décrire l'action - c'est certainement ainsi que fonctionnent les services PB intégrés.

Le client n'appellerait pas doGet() - il ferait une requête (probablement un POST plutôt qu'un GET) et votre servlet le recevrait.

Maintenant, idéalement, vous pourriez avoir un "ProtocolBufferServlet" général qui pourrait desservir les demandes en les transmettant aux services implémentant les interfaces appropriées.

Je vous suggère de regarder la documentation pour Protocol Buffer services et le Java services generated code pour plus d'informations. Vous pouvez implémenter un RpcChannel qui a fonctionné sur des servlets, ou demander au client de publier le message HTTP directement. Vous utiliseriez probablement une injection de dépendances de quelque sorte sur le serveur pour indiquer au servlet l'implémentation du service.

+0

Serait-ce une implémentation appropriée pour Protocol Buffer? Je ne suis pas sûr à 100% que je suis nouveau. Le tampon de protocole n'est-il pas idéal pour envoyer des messages d'un processus à un autre où vous contrôlez les extrémités du client et du serveur? Donc, avoir votre Web App HTTP -> tampon de protocole n'a pas de sens pour moi. désolé –

+0

@Peter: Les servlets n'ont pas besoin de servir HTML. Les services Web peuvent être implémentés avec des servlets, et ils peuvent à leur tour utiliser des tampons de protocole. Qu'est-ce qui vous fait penser que l'OP * ne contrôle pas * le client et le serveur, ou qu'il n'est pas au moins en position de dicter que le client doit être écrit pour afficher/consommer des tampons de protocole. –

Questions connexes