用Flash Builder 4 beta建立连接BlazeDS远程端的Flex应用程序
这篇文章阐释了如何在Flash Builder 4 beta 2中用BlaseDS远程服务在服务器上调用Java类的方法来创建Flex应用程序。为应用程序配置好所需的服务器环境后,你将用Flash Builder 4 生成ActionScript服务类并建立一个显示服务请求结果的Flex应用程序。 配置服务器环境第一步,创建被Flex应用程序调用的Java类。本篇文章的应用程序使用了SimpleCustomerService类,这个类的方法被命名为getAllCustomers(),将在Flex应用程序中被调用: public class SimpleCustomerService { public ArrayList<SimpleCustomer> getAllCustomers() { ArrayList<SimpleCustomer> customers = null; //code to create ArrayList containing SimpleCustomer objects return customers; }}
通过编译<SampleZipFile>/java_src?文件夹中的SimpleCustomerService.java和SimpleCustomer.java开始(或者你可以在<SampleZipFile>/java_classes?文件夹中提前编译类文件)。 用类文件创建Web应用,步骤如下:
安装BlazeDS在你从Flex应用程序调用Java类之前,你必须用BlazeDS显示类作为远程服务终端。要为你的Web应用程序配置BlazeDS,你必须在Web应用源路径中部署BlazeDS JAR文件。安装BlazeDS步骤如下:
下面,你需要为BlazeDS Servlet添加 Servlet mapping命名为:MessageBrokerServlet,以便于当你用任一渠道支持向远程、消息或者代理服务发送请求时调用BlazeDS。 如果你正在使用你自己的web.xml文件,那么就需要添加以下代码,或者你可以从blazeds/WEB-INF/web.xml拷贝这段代码。 <!-- Http Flex Session attribute and binding listener support --><listener><listener-class>flex.messaging.HttpFlexSession</listener-class></listener><!-- MessageBroker Servlet --><servlet><servlet-name>MessageBrokerServlet</servlet-name><display-name>MessageBrokerServlet</display-name><servlet-class>flex.messaging.MessageBrokerServlet</servlet-class><init-param><param-name>services.configuration.file</param-name><param-value>/WEB-INF/flex/services-config.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>MessageBrokerServlet</servlet-name><url-pattern>/messagebroker/*</url-pattern></servlet-mapping>
Flash Builder 4用 <servlet> <servlet-name>RDSDispatchServlet</servlet-name> <display-name>RDSDispatchServlet</display-name> <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class> <init-param> <param-name>useAppserverSecurity</param-name> <param-value>false</param-value> </init-param> <load-on-startup>10</load-on-startup></servlet><servlet-mapping id="RDS_DISPATCH_MAPPING"> <servlet-name>RDSDispatchServlet</servlet-name> <url-pattern>/CFIDE/main/ide.cfm</url-pattern></servlet-mapping>
创建远程目标 要显示Java 类作为远程目标你需要在 <destination id="SimpleCustomerServiceDestination"> <properties> <source>com.adobe.services.SimpleCustomerService</source> </properties></destination>
当你启动你的Web服务时,BlazeDS将暴露你的Java类作为一个远程终端,将 开发客户端应用程序 由于服务器已建立,你该准备用Flash Builder 4 来产生为消耗远程服务目标产生成代码。Flex应用程序将调用你在终端创建的 生成可以消耗远程服务终端的ActionScript代码,Flash Builder将向BlazeDS或者Adobe LiveCycle Data Services ES2发送请求以激活你在项目服务器设置中配置的Web应用程序并且检索外端服务器终端的细节。 以下是创建新的Flex项目的步骤:
图1. 设置项目属性
图2. 配置服务器设置
因为你在项目属性窗口中设置服务器的类型是J2EE,Flash Builder将提示你服务器设置。
创建一个新的服务在Flash Builder 4中创建一个新的服务,步骤如下:
图3. 选择服务类型
Flash Builder与服务器通信,显示一列外部服务目标列表,如图4 所示。
图4. 有效终端列表
Flash Builder 4生成ActionScript类,这个类代表与选择的远程服务目标相关的Java类。在这个例子中,Flash Builder 4产生的类名为SimpleCustomerServiceDestination,它在SimpleCustomerService.java中显示的每个公用方法的参数。在服务器上调用SimpleCustomerService.java方法,你只需调用SimpleCustomerServiceDestination.as中相应的函数。你可以看到服务 (SimpleCustomerServiceDestination.as)和它的操作(代表服务器类的函数)列在Data/Services视图中。你也可以用Package浏览器看到代码。 如果任何自定义数据类型作为返回类型或者作为Java类方法的参数,Flash Builder 4将生成一个ActionScript类来代表与服务类文件一起的自定义数据类型。在这个例子中, 既然消耗远程服务目标所需的代码已经生成,下段中的步骤将显示在UI控件中来自服务请求的响应。 给UI组件绑定服务请求结果 Flash Builder 4也可以生成代码来调用服务请求并绑定服务请求结果给UI组件。在这个例子中,你将绑定
图5. 选择服务和操作
因为你选择了"新的服务请求(New service call)",Flash Builder 4将创建一个新的SimpleCustomerServiceDestination类的实例,并在当前MXML文件中创建一个 CallResponder类。如果SimpleCustomerServiceDestination实例已经存在,唯一的CallResponder 实例将被创建。CallResponder类帮助你管理asynchronous请求结果给RPC-based 服务。你会在Flex语言参数中发现更多关于CallResponder的细节。 注意:?如果你在当前的MXML文件中已经有了服务请求并且你想绑定结果到UI组件上,那么在"绑定数据(Bind To Data)"对话框中选择现有的请求结果,并选择现有的服务请求。 保存你的应用程序并运行它。Flex应用程序在Web浏览器中发布后,它将调用服务器上的SimpleCustomerService Java类中的 从这里出发还可以学到什么既然你已经会用Flash Builder 4 开发向BlazeDS 远程服务端发送请求的Flex应用程序,并在DataGrid中显示回应,你也许想找机会在你自己的应用程序中使用这个方法。你可以显示任何一个Java 类as a BlazeDS or LiveCycle Data Services ES2 Remoting service destination and build a Flex application in Flash Builder 4 to consume that destination。 你也可以使用Flash Builder 4 在LiveCycleDataServiceES2中来为HTTP服务,web服务和数据管理服务建立Flex应用程序。在Tim Buntel的文章Data-centric development with Flash Builder 4 beta中,你能学习到更多。 如果你正在开发以数据为中心的应用程序,你也应该花些时间来了解数据的管理和LiveCycle Data Services ES2模型驱动开发能力。LiveCycle Data Services ES2 Quick Starts是加速你起跑的极其优秀的资源。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |