BlazeDs Java对象的序列化

时间:2011-11-14 11:57:06

标签: java flex blazeds serializable iexternalizable

我有一些实现序列化的Java类,以及实现IExternalizable的相应AS对象(由GAS自行生成)。

从服务器接收对象没有问题,但是当我尝试将对象发送到服务器时 - 它会引发异常:

[BlazeDS]Class 'xxx' must implement java.io.Externalizable to receive client 
 IExternalizable instances. flex.messaging.io.SerializationException: Class 'xxx' must  
implement java.io.Externalizable to receive client IExternalizable instances.

我真的必须实现Externalizable来将对象发送到Java服务器吗?!

2 个答案:

答案 0 :(得分:1)

实际上,我不必实现Externalizable,甚至不能实现Serializable。 相反,我只需要在flex方面指定它是一个带有别名的远程类,它指向完整的java类路径。我还应该确保属性名称(或getter和setter)等于java对象属性名称。最后,我应该确保对象/属性类型匹配或转换得很好(数字java对象到Flex等中的Number)。

答案 1 :(得分:0)

您必须实施Externalizable。

请参阅http://help.adobe.com/en_US/LiveCycleDataServicesES/3.1/Developing/WSc3ff6d0ea77859461172e0811f00f6eab8-7ffdUpdate.html

在ActionScript和Java之间使用自定义序列化

如果客户端上的ActionScript与服务器上的Java之间的数据序列化和反序列化的标准机制不能满足您的需求,您可以编写自己的序列化方案。您可以在客户端上实现基于ActionScript的flash.utils.IExternalizable接口,并在服务器上实现相应的基于Java的java.io.Externalizable接口。