1

我想知道如何使用谷歌协议缓冲区来接受请求并将响应发送回客户端?我正在考虑编写一个接受请求的 servlet。以下思路是否是实现此目的的正确方法: 1. 有一个 .proto 文件,该文件是传入请求的消息定义。2. 编写一个 servlet 接受该请求,执行查询数据库等各种任务,然后发送响应。此响应是否需要一个单独的 .proto 消息定义,其中包含构成响应的所有字段?3. 客户端是否会调用我的 servlet 的 doGet() 方法并传递请求,然后它应该将响应作为 protobuff 对象返回?

任何建议或想法将不胜感激。

4

2 回答 2

6

通常,您需要一条请求消息和一条响应消息,是的。您可能还需要一个方法名称来描述操作 - 这当然是内置 PB 服务的工作方式。

客户端不会调用 doGet() - 它会发出请求(可能是 POST 而不是 GET)并且您的 servlet 会接收它。

现在,理想情况下,您可以拥有一个通用的“ProtocolBufferServlet”,它可以通过将请求传递给实现适当接口的服务来为请求提供服务。

我建议您查看Protocol Buffer 服务Java 服务生成代码的文档以获取更多信息。您可以实现一个RpcChannel在 servlet 上工作的方法,或者让客户端直接进行 HTTP 发布。您可能会在服务器端使用某种依赖注入来告诉 servlet 是什么实现了该服务。

于 2009-07-21T22:48:26.123 回答
0

你好,

我已经启动并运行了。我最终将 http 请求作为帖子发布到我的 servlet。我能够获取请求协议缓冲区,读取请求,进行一些处理,然后发回响应。一旦我开始工作,它实际上真的很简单。我们使用 1 .proto 文件来定义请求和响应消息结构。

于 2009-08-27T17:10:00.547 回答