flex和java实体类的映射关系(blazeds方式通信)

       大家都知道,实例映射只要加上如[RemoteClass(alias="com.samples.product.Product")]这样的标签就可以前后对应了,但是里面的具体过程很多人不明白。如果java端对应的实体类只有一个有参数的构造函数的话,后台就会报:Unable to create a new instance of type 'myhotel.Room'. Detail: Types cannot be instantiated without a public, no arguments constructor——也就是被连接的Java类找不到对应的无参构造函数。

       原因是,如果只有一个有参数构造函数的话无参的构造函数不起作用Blazeds的调用Java函数的机制就是通过java的创建Java类的一个实例,然后再由实例调用对应需要的函数。所以当你要使用Blazeds连接java类,要在这个类里面创建一个无参构造函数,当然你可以选择什么都不做(即不自己手动写有参的构造函数,否则你需要写两个,有参和无参的)。。

       AMF(Action Message Format)是一种 binary format的资料型态,透过 AMF over HTTP的方式将flash端资料编码后传回server,server端的remoting adaptor接收到资料后则会译码回正确的native对象,交给正确的程序处理。 
       AMF除了用于Flash remoting外,也广泛的用于 Local Connection 与 Flash communication server,它最大的特色在于可直接将flash native object,例如Object, Array, Date, XML,传回server端,并且在server端自动进行转译成适当的对象,例如flash 的Array传回PHP时就会自动转换为 Associative Array;这个特色对开发者最大的好处在于不需要再人工处理serialization 与 deserialization的繁复工作,不但精确度更高,同时开发也更省时间。 
       由于AMF是binary format并且编码时经过高度压缩,因此非常适合用来传递大量的资料,根据flashorb网站的测试(主要针对web service与flash remoting),当资料量越大时,flash remoting的传输效能就越高,远远超过web service的表现,因此同样的道理也可得知xml, loadVars, loadVariables 等使用plaine text format的传输方式自然也无可比拟。

你可能感兴趣的:(flex)