【问题标题】:Google protocol buffers and servletsGoogle 协议缓冲区和 servlet
【发布时间】:2009-07-21 22:40:40
【问题描述】:

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

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

【问题讨论】:

    标签: java servlets protocol-buffers


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这会是 Protocol Buffer 的正确实现吗?我不是 100% 确定我是新手。 Protocol Buffer 不是理想的从一个进程发送消息到你控制客户端和服务器端的进程吗?所以让你的 Web App HTTP --> Protocol Buffer 对我来说没有意义。对不起
    • @Peter:Servlet 不必提供 HTML。 Web 服务可以用 servlet 实现,而它们又可以使用协议缓冲区。是什么让您认为 OP 控制客户端和服务器,或者他至少不能指示客户端应该写入发布/使用协议缓冲区。跨度>
    【解决方案2】:

    嗨,

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

    【讨论】:

      猜你喜欢
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 2010-12-15
      • 1970-01-01
      • 2011-10-18
      相关资源
      最近更新 更多