2009-07-21 63 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