2009-07-21 118 views
1

我想知道如何使用谷歌協議緩衝區來接受請求並將響應發送回客戶端?我正在考慮編寫一個將接受請求的servlet。 以下思路是實現此目標的正確方法: 1.有一個.proto文件,它是傳入請求的消息定義。 2.編寫一個接受此請求的servlet,執行各種任務,如查詢數據庫 ,然後發送響應。這個響應是否需要一個獨立的.proto消息定義,包含組成響應的所有字段? 3.客戶端是否會調用我的servlet的doGet()方法並傳遞請求,然後應該返回一個作爲protobuff對象的響應?谷歌協議緩衝區和小服務程序

任何建議或想法將非常感激。

回答

-1

嗨,

我有這個和運行。我最終發佈了一個http請求作爲我的servlet的帖子。我能夠接受請求協議緩衝區,讀取請求,做一些處理,然後發送迴應。實際上,一旦我開始工作,它確實很簡單。我們使用1 .proto文件來定義請求和響應消息結構。

5

通常你會想要一個請求消息和一個響應消息,是的。您也可能需要一個方法名稱來描述操作 - 這當然是內置PB服務的工作原理。

客戶端不會調用doGet() - 它會發出請求(可能是POST而不是GET),並且您的servlet會收到它。

現在,理想情況下,您可以擁有一個通用的「ProtocolBufferServlet」,它可以通過將請求交給實現相應接口的服務來處理這些請求。

我建議你看看Protocol Buffer servicesJava services generated code的文檔以獲取更多信息。您可以實現一個處理servlet的RpcChannel,或者讓客戶端直接創建HTTP發佈。您可能會在服務器端使用某種類型的依賴注入來告訴servlet實現該服務的內容。

+0

這是否適用於協議緩衝區?我不是100%肯定我是新手。協議緩衝區是否理想用於​​將消息從流程發送到您控制客戶端和服務器端的流程?所以讓你的Web App HTTP - > Protocol Buffer對我來說沒有意義。抱歉 – 2010-01-09 14:55:49

+0

@Peter:Servlet不必提供HTML。 Web服務可以使用servlet實現,並且它們可以使用協議緩衝區。是什麼讓你認爲OP *不能控制客戶端和服務器,或者他至少無法指定客戶端應該被寫入來發布/使用協議緩衝區。 – 2010-01-09 15:17:46