如果这个问题有点明显,我很抱歉,但我是BlazeDS的新手,似乎无法找到答案。我在带有Flex前端的BlazeDS服务器上运行Java。我希望能够只实例化我的Java类一次,然后让Flex使用setter和getter来处理Java类中的数据(从某种意义上说,将RemoteObject视为类的实例) )。据我所知,这似乎是BlazeDS的工作方式,但每次我从Flex调用任何Java方法时,它都会再次调用Java构造函数,重置setter方法输入的任何内容。有没有办法让服务器在方法调用之间保存Java类的实例?谢谢!
答案 0 :(得分:2)
你似乎误解了这是如何运作的。
Flex客户端中的对象和服务器上的对象完全独立。在正常情况下,Flash Player / A Flex App仅使用WebSerice,HTTPService或RemoteObject与远程服务进行通信。 RemoteObject支持使用BlazeDS,LiveCycle Data Services,ColdFusion和大量其他服务器端软件的AMF和Flash Remoting。
当您对服务器进行远程调用时,该请求与标准网页调用没有什么不同。它存在于“隔离”中,对任何其他调用一无所知。在传统的HTML开发中,我们使用会话cookie来跟踪“无状态”客户端中的服务器会话。对于Flex调用,情况也是如此。如果您的服务器在客户端上设置cookie;然后Flash Player将在每个请求中包含这些cookie;将服务调用与服务器端会话相匹配。
是否使用每次调用创建对象取决于远程调用的作用。
AMF / RemoteObject提供的好处是它可以轻松地将服务器端对象(Java类)转换为客户端对象(ActionSCript类)。这主要用于在两个不同实体之间传递数据。通常人们为此制作价值对象/数据传输对象;但是这些类可以具有相同的功能。它与Flex和Java中都存在相同的对象。
这有帮助吗?