如何将序列化对象传递给appengine java任务?

如何将序列化对象传递给appengine java任务?,java,google-app-engine,task,Java,Google App Engine,Task,我正在使用JavaAppEngine和任务队列API来运行异步任务。我想向任务队列中添加一个任务,但将java对象作为参数传递。我注意到TaskOptions api可以将参数添加为字节[],但我不确定如何使用它 1) 如何将对象序列化为字节[]? 和 2) 任务如何读取字节[]并重建原始对象 谢谢。将对象转换为字节序列,反之亦然,这就是它的用途。在这个简单的例子中,Java类只需声明它实现了可序列化,就可以序列化 对象的序列化基于内省,其中序列化代码查看可序列化类的数据,并以描述结构和数据的方

我正在使用JavaAppEngine和任务队列API来运行异步任务。我想向任务队列中添加一个任务,但将java对象作为参数传递。我注意到TaskOptions api可以将参数添加为字节[],但我不确定如何使用它

1) 如何将对象序列化为字节[]? 和 2) 任务如何读取字节[]并重建原始对象


谢谢。

将对象转换为字节序列,反之亦然,这就是它的用途。在这个简单的例子中,Java类只需声明它
实现了可序列化
,就可以序列化

对象的序列化基于内省,其中序列化代码查看可序列化类的数据,并以描述结构和数据的方式对其进行打包。由于数据流包含重建整个对象所需的信息,因此接收方就是这样做的


您可以通过将
对象输出流
包装在
ByteArrayOutputStream
周围来查看血淋淋的细节,为其编写一个对象并查看底层字符串,但您可能会发现页面信息更丰富。

您有一些技术可以使用队列API交付字节流

  • 使用TaskOptions.payload方法

  • 使用TaskOptions.params方法

  • 我将演示如何写入和读取字节流信息,因为google appengine实现存在一些小问题:)

    写入字节: //task是TaskOptions的一个实例 //Base64-这里使用Apache实现将字节编码为Base64 //taskBytes-序列化的字节

    task.param(“输入参数名”,Base64.encodeBase64(taskBytes))

    读取字节: //Base64-这里使用Apache实现将字节编码为Base64

    byte[]questionsBytes=Base64.decodeBase64(request.getParameter(“输入参数名称”).getBytes()

    这个解决方案对我很有效

    祝你一切顺利
    Uri

    感谢链接-我已经成功地将一个对象写入字节流(然后写入字节数组)。但是,我不知道如何从字节数组中读取并重建对象。有什么想法吗?另外,您对appengine任务队列api的工作原理有何想法?我可以将字节[]作为参数传递给任务。但是,我不清楚在任务运行时如何从参数映射中获取字节数组。对象重建由ObjectInputStream处理。