Java 通过RMI将ProtocolBuffer Message.Builder发送到另一台计算机
我有以下伪代码:Java 通过RMI将ProtocolBuffer Message.Builder发送到另一台计算机,java,rmi,protocol-buffers,netty,Java,Rmi,Protocol Buffers,Netty,我有以下伪代码: public void sendPB(ObjectId userId, Message.Builder mb) { if (userId is logged in to server) { set mb.ackId to random chars lookup socket and send mb.build() } else { forward message to user's server via R
public void sendPB(ObjectId userId, Message.Builder mb) {
if (userId is logged in to server) {
set mb.ackId to random chars
lookup socket and send mb.build()
}
else {
forward message to user's server via RMI
}
}
问题是消息。构建器没有实现可序列化,所以您不能直接通过RMI发送它
有没有一个简单的方法可以做到这一点
我已经尝试从构建器中构建部分PB并将其发送过来,但是为了重建它,您需要知道类型或描述符。描述符也不实现可序列化
感谢任何您无法调用
build()
,获取消息
,并以任何正确格式发送它的原因(例如,toString()
)。在另一端,您可以将其充气回消息
,并在需要时使用toBuilder()
将其重新放入生成器
您也可以将消息转换为二进制格式并发送
也许我误解了——ProtocolBuffers的全部目的是将
消息
转换成一个有线表示,所以有很多方法可以实现这一点(大多数方法要么是可序列化的
,要么是简单地包装起来。)我让它工作了。。。我必须在RMI消息中包含一个typeID字段。然后,我可以获取typeID并将其解析为消息生成器,然后合并部分构建消息的字节