Adobe高级技术官员Christophe Coenraets发表了一篇题为"30-Minute Flex Test-Drive for Java Developers."的文章,目的是为Java开发者在很短的时间内学习Flex的关键特性,以及它的潜在的编程模型提供机会。
通过配置运行在Tomcat上或另一个应用服务器上的内含的WAR文件,向开发人员展示了10个应用事例。这些例子主要集中于将Flex与Java整合, 其中包括远程方法与web services的,server push,实时协作,发布/订阅消息与JMS联合以及持续性。它们也演示了图表与多媒体组件等特点。
从企业应用到简单的CRUD应用,Flex正被采用。对于你们当中已经采用Flex构建了企业应用,选择它的原因是什么呢?对于它,你又喜欢它什么了呢?
Flex正被一些Java shops,ISVs和OEMs采用来在防火墙内部与外部构建应用。然而,我也意识到仍有许多的Java开发者并不熟悉Flex,并且有时对它有错误概 念。Flex与Java back-end结合的特别好,从试用过Flex的开发者反馈回的信息看对它的评价一直都是非常棒的。
一个问题就是,每天我们都有许多新产品要去试用,但是我们仅有这么多的时间…,因此,我写了“this 30 minutes test-drive”,用最少的时间,给出开发者对于Flex的理解―Flex如何工作,它能做些什么:你要做的就是配置运行在你选择的Tomcat上 或另一个应用服务器上的内含的WAR文件,这些例子主要集中于将Flex与Java back-end整合,针对的读者是对Flex事先没有了解的Java开发者把你们的问题/评论和任何能提高这个测试的建议发给我们,不要迟疑,多 谢!!!
这个测试的目的是用较少的时间,给出开发者对于Flex的理解―Flex如何工作,它能做些什么。测试由尽可能简明的例子组成,清晰地展示了有趣的特征。 这些例子主要集中于将Flex与Java back-end整合。针对的读者是对Flex事先没有了解的Java开发者
开始之前你要知道的几件事...
Flex编程模块由以下部分组成
MXML,一个XML语言,用来公开地展示你的应用的用户接。ActionScript,一个符合ECMAScript的面向对象的编程模块。除了语法上 的一些不同,ActionScript与Java看上去以及感受上很相似,也支持面向对象结构:包,类。继承,接口,强制类型(也是动态性)等等。
一个扩展的类库。在 [url]http://livedocs.macromedia.com/flex/2/langref/index.html[/url]上可以获得与Javadoc格式类似的在线的API文档,Flex源代码(.mxml和.as文件)被编译成Flash字节码(.swf),在客户端可以被Flash 虚拟机执行。
你 可以通过不同的方式使用Flex编译器:从命令行做为ant脚本的一部分,使用FlexBuilder,编译过程被整合于IDE中使用web编译器(可以 通过Flex Data Services获得)。这与JSP编译模型有些类似,第一次一个应用被要求编译成字节码,然后缓存到服务并发请求中。
在产品运行的环境中你根本不用web编译器,然而在这个测试中为了在你机器上安装最少量的组件,我们一直使用了web编译器(你需要安装的是一个war文件)。
Flex产品包括:
Flex SDK,它是免费的,包含Flex库,编译器(mxmlc),调试器,文档。
Flex Data Services (FDS),一个部署于你的J2EE应用服务器上的一套可选择的服务器端组件。FDS包括一个Java RPC 服务(Java RPC service--见例3),发布/订阅消息(publish/subscribe messaging--见例6与7),数据管理服务(data management services --见例8)。FDS对于采用单CPU情况是免费的(FDS Express),如果部署在多CPU系统上,需要按每CPU方式得到许可。
FlexBuilder,一个用于Flex开发的可选择的IDE。做为一个为Eclipse构建的插件,FlexBuilder包括一个设计视图和一个代码视 图,代码提示,可视调试等,FlexBuilder
按每开发者方式为基础获得许可。
可选择charting component(图表组件)按每开发者方式为基础获得许可。
你可以完全免费地使用SDK并选择IDE来开发和部署Flex应用。对于需要Flex Data Services的例子我会显著地标示出来。
安装测试驱动文件
因为我们将使用Flex Data Services,你需要一个J2EE服务器或最小程度上,要有一个Servlet容器。
下载测试驱动的war文件。
如果你要使用执行全部J2EE stack的应用服务器(IBM Websphere, BEA Weblogic, JBoss, JRun,等等),从http: //coenraets.org/download/testdrive/flex4j/j2ee/testdrive.war下载要用到的版本。它包括 Flex Data Services的应用事例,内嵌的支持事例的HSQLDB数据库。
如果你使用Tomcat 5.5.x,从http: //coenraets.org/download/testdrive/flex4j/tomcat/testdrive.war下载要用到的版本。它 包括内嵌的支持事例的HSQLDB数据库,JOTM(在例8中用到的一个数据管理服务--data management services所需要的Java事务API --Java Transaction API的开源实现)。
如果你使用Tomcat 5.0.x,从[url]http://coenraets.org/download/testdrive/flex4j/tomcat50[/url]
/testdrive.war 下载要用到的版本。它包括Flex Data Services,应用事例,内嵌的支持事例的HSQLDB数据库,JOTM(在例8中用到的一个数据管理服务--data management services所需要的Java事务API --Java Transaction API的开源实现)。
注意:5.5.x和5.0.x版本唯一不同就是在META-INF\context.xml文件中的JOTM的配置(在Tomcat 5.5中你配置UserTransaction的方式已经改变了)。
Deploy testdrive.war in your application server
在你的应用服务器中部署testdrive.war文件 ,访问 [url]http://localhost:8080/testdrive[/url](适当地改变主机名和端口号)。
样例1:使用HTTPService访问数据
运行样例:
访问 [url]http://localhost:8080/testdrive/sample1/SampleXML.mxml[/url]
在这个测试中,你会注意到在你第一次访问一个应用时会有一个延迟。这是因为第一次访问应用时我们使用的web编译器要将你的应用编译成字节码(和JSP编 译模型相类似)。在此之后的请求会更快,因为这个应用已经被编译过了。在一个产品环境中,你应当部署你的预编译应用。
注意:根据你的配置不同,你可能需要增加你的应用服务器的JVM的堆容量,以便使用web编辑器。在产品环境中不会需要这样做,因为你不使用web编辑 器。如果你在尝试第一次访问一个样例时,获得一个java.lang.OutOfMemoryError例外,那么你必须增加堆容量。
点击"Get Data":DataGrid控件被填充catalog.jsp文件返回的XML数据,也要注意到一些内置的DataGrid控件的特点:列可以排序(点 击列标题头),列可以移动(点击列标题头,按下鼠标按钮,将列移到一个新的位置)在代码编辑器中打开下面的文件:
testdrive/sample1/SampleXML.mxml
testdrive/sample1/catalog.jsp
使用HTTPService,你能够发送HTTP请求到服务器,然后处理响应。虽然HTTPService能用来处理不同的响应类型,但是处理XML是更 为特色的。你可以利用任何种类的服务器端技术来使用HTTPService:JSP, Servlet, ASP, Ruby on Rails, PHP等等。你可以在HTTPService的url属性里指定目标服务。
Flex提供了精致的数据绑定性能。你可以将一个属性值绑定到另一个属性值上,或到一个通用表达式上。在这个例子中,DataGrid控件的dataProvider属性被绑定到了HTTPService的lastResult属性上。
HTTPService调用是异步的。在客户端应用获得数据时,导致HTTPService上的结果事件被触发。如果在服务器端一个错误发生,或网络出现 错误,那么错误事件被触发。(参见例5,一个代码结果与错误事件处理器的例子)默认地,从服务器获得的XML文档被无序地放入一个目标图表中。这允许你使 用点符号操纵数据。你也可以通过在HTTPService上指定resultFormat="e4x"做为一个XML文档获取结果。在那样的情况下,你可 以使用E4X (ECMAScript for XML)解析文档。
更多信息HTTP和HTTPS都得到支持:
取代使用url属性指定一个hardcoded URL,你能够在目的属性中指定一个逻辑名称。然后你可以将这个逻辑名称映射到WEB-INF\flex\proxy-config.xml文件中的一个 确切的URL上。在这个例子中,你可以用destination="catalog"替换url="catalog.jsp"(打开WEB-INF\ flex\proxy-config.xml查看catalog destination是如何配置的)。另一个例子,你可以指定destination="news" 然后改变DataGrid的数据绑定到dataProvider="{srv.
lastResult.rss.channel.item}",就可以从纽约时报上获得标题。
样例2:
运行样例
访问 [url]http://localhost:8080/testdrive/sample2/SampleWebService.mxml[/url]
点击"Get Data": DataGrid控件被填充在我的博客上的ProductWS web服务返回的数据。
在代码编辑器中打开下列文件:
testdrive/sample2/SampleWebService.mxml
访问[url]http://coenraets.org/services/ProductWS?wsdl[/url]例子中的web服务
使用WebService标签,你能激活部署于你的应用服务器或互联网上的基于SOAP的web服务,web服务返回的对象被自动地并不连续地放入 ActionScript对象中。同样作为参数传递给一个web服务操作的ActionScript对象按照wsdl文件描述成为连续的。
注意在这个例子中我们也加入了DataGrid控件的列定义(使用DataGridColumn)
更多信息:
Flex支持RPC-encoded和document-literal和HTTPService一样, WebService调用是异步的:你可以用代码编写结果和查错事件处理器,和使用HTTPService一样,你可以使用一个逻辑名而不是一个硬编码的 URL来确定服务,名将其映射到WEB-INF\flex\proxy-config.xml中。
样例3:
运行样例
访问 [url]http://localhost:8080/testdrive/sample3/SamplePOJO.mxml[/url]
点击"Get Data": DataGrid控件被填充ProductService Java 类的getProducts()方法返回的数据,在代码编辑器中打开下列文件:
|
0人
|
了这篇文章 |
类别:未分类┆阅读(
0)┆评论(
0) ┆ 返回博主首页┆ 返回博客首页
上一篇 Flex连接javaEE简介 下一篇 as3.0 实现FLASH在浏览器中全屏