2009-07-21 8 views
1

Ich frage mich, wie ich Google Protokollpuffer verwenden kann, um eine Anfrage zu akzeptieren und eine Antwort zurück an einen Kunden zu senden? Ich denke über das Schreiben eines Servlets nach, das eine Anfrage annehmen wird. Ist der folgende Weg der richtige Weg, um dies zu implementieren: 1. Haben Sie eine .proto-Datei, die die Nachricht Definition für die eingehende Anfrage ist. 2. Schreiben Sie ein Servlet, das diese Anfrage akzeptiert, verschiedene Aufgaben wie die Abfrage der Datenbank ausführt und dann eine Antwort sendet. Wird für diese Antwort eine separate .proto-Nachrichtendefinition mit allen Feldern benötigt, aus denen die Antwort besteht? 3. Ruft der Client nur die Methode doGet() meines Servlets auf und übergibt die Anfrage, sollte er dann eine Antwort als protobuff -Objekt zurückgeben?Google Protokollpuffer und Servlets

Jeder Vorschlag oder Idee wird sehr geschätzt.

Antwort

-1

HI,

Ich habe das auf und läuft. Ich habe am Ende eine http-Anfrage als Beitrag zu meinem Servlet veröffentlicht. Ich war in der Lage, den Request-Protokoll-Puffer zu nehmen, die Anfrage zu lesen, etwas zu verarbeiten und dann eine Antwort zurückzusenden. Es war wirklich sehr einfach, als ich es funktionierte. Wir haben die Datei 1.proto verwendet, um die Struktur der Anfrage- und Antwortnachrichten zu definieren.

+3

Ich bin froh, dass es funktioniert hat, aber das erklärt nicht wie. – Tarelli

+0

Fügen Sie einfach Beispielcode aus dem Servlet ein – kyunez

5

Normalerweise möchten Sie eine Anfrage Nachricht und eine Antwort-Nachricht, ja. Sie möchten wahrscheinlich auch einen Methodennamen, um die Aktion zu beschreiben - so funktionieren die integrierten PB-Dienste.

Der Client würde doGet() nicht aufrufen - es würde eine Anfrage (wahrscheinlich ein POST statt GET) machen und Ihr Servlet würde es erhalten.

Nun, idealerweise könnten Sie ein allgemeines "ProtocolBufferServlet" haben, das die Anfragen bedienen könnte, indem es sie an Dienste weitergibt, die die entsprechenden Schnittstellen implementieren.

Ich schlage vor, dass Sie sich die Dokumentation für Protocol Buffer services und die Java services generated code für weitere Informationen ansehen. Sie könnten eine RpcChannel implementieren, die über Servlets funktioniert, oder den Client dazu bringen, den HTTP-Post direkt zu erstellen. Sie würden wahrscheinlich eine Abhängigkeitsinjektion von irgendeiner Art auf der Serverseite verwenden, um dem Servlet mitzuteilen, was den Dienst implementiert hat.

+0

Wäre dies eine ordnungsgemäße Implementierung für Protocol Buffer? Ich bin mir nicht 100% sicher, dass ich neu bin. Ist Protocol Buffer nicht ideal für das Senden von Nachrichten von Prozess zu Prozess, wo Sie sowohl Client- als auch Server-Enden steuern? Die Verwendung Ihrer Webanwendung HTTP -> Protocol Buffer macht also für mich keinen Sinn. Entschuldigung –

+0

@Peter: Servlets müssen HTML nicht dienen. Web-Services können mit Servlets implementiert werden, und sie können wiederum Protokollpuffer verwenden. Was lässt Sie glauben, dass das OP * nicht sowohl den Client als auch den Server kontrolliert, oder dass es zumindest nicht in der Lage ist zu diktieren, dass der Client geschrieben werden sollte, um Protokollpuffer zu schreiben/zu verbrauchen. –