Flex要实现与Java集成,开源项目BlazeDS、GraniteDS、Flamingo都提供了相应的解决方案,考虑到BlazeDS是Adobe官方的开源项目,因此采用BlazeDs作为Flex与Java通信的基础框架。什么是BlazeDS呢,看看官方的介绍:
BlazeDS is the server-based Java remoting and web messaging technology that enables developers to easily connect to back-end distributed data and push data in real-time to Adobe® Flex® and Adobe AIR™ applications for more responsive rich Internet application (RIA) experiences.
开发工具采用Eclipse+Flex Builder 3 Plug-in方式,不采用Flex Builder 3。先安装Eclipse,再安装Flex Builder 3 Plug-in,相关的安装配置不再赘述。
1、下载BlazeDS
下载BlazeDS Turnkey :http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-turnkey-3.2.0.3978.zip
由于BlazeDS Turnkey中包含BlazeDS的使用例子,对于入门熟悉Flex及BlazeDS都有较好的参考价值,因此建议下载BlazeDS Turnkey。
关于blazeds-turnkey 的目录说明:
docs:BlazeDS Javadoc
resources:BlazeDS的相关支持包,包括clustering(采用jgroups)、BlazeDS与ColdFusion 集成的配置文件、BlazeDS的配置文件、BlazeDS与AJAX集成的桥、Flex的SDK、Flex的java library、BlazeDS与Tomcat、Jboss、Websphere等security集成的支持包。
sampledb:hsqldb的启动脚本及样例数据库
tomcat:Tomcat 包
blazeds.war:最小化的BlazeDS 文件,可以作为空白项目来建立BlazeDS 应用程序。
sample.war:BlazeDS的demo例子(所谓的testdrive)。
ds-console.war :BlazeDS的部署管理程序。
2、建立Java Web Project
File->New->Web Project 建立Java helloworld项目
blazeds1 在helloworld/src下,新建com.yeeach.HelloWorldService类,内容如下:
package com.yeeach;
public class HelloWorldService {
public String hello(String var1) {
return “hello ” + var1;
}
public String world(String var1) {
return “world ” + var1;
}
}
3、建立helloworld的BlazeDS开发环境
3.1、拷贝blazeds.war下的WEB-INF到helloworld的目录下,覆盖原有的WEB-INF
3.2、在helloworld下建立flex-src目录(与src同级),用于存放flex的相关代码
blazeds2 helloworld/src:用于存放项目的java代码
helloworld/flex-src:用于存放项目flex的相关代码
helloworld/WebRoot/WEB-INF/flex:存放flex的相关配置文件
3.3、设置Flex Project Nature
blazeds3
blazeds4
blazeds5
3.4、在helloworld/flex-src下,新建MXML Application :helloworld.mxml ,内容如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”
layout=”vertical”>
<mx:RemoteObject destination=”com.yeeach.HelloWorldService”
id=”helloWorldService”>
<mx:method name=”hello”
result=”sayHelloResult(event)”/>
<mx:method name=”world”
result=”sayWorldResult(event)”/>
</mx:RemoteObject>
<mx:HBox>
<mx:Label text=”输入:”/>
<mx:TextInput id=”inputStr”/>
<mx:Button label=”say hello”
click=”sayHello(event);”/>
<mx:Button label=”say world”
click=”sayWorld(event);”/>
</mx:HBox>
<mx:HBox>
<mx:Label text=”结果:”/>
<mx:TextArea id=”result”/>
</mx:HBox>
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
function sayHello(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.hello(inputVar);
}
function sayWorld(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.world(inputVar);
}
private function sayHelloResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
private function sayWorldResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
]]>
</mx:Script>
</mx:Application>
3.5、修改remoting-config.xml,增加对destination的说明
<destination id=”com.yeeach.HelloWorldService”>
<properties>
<source>com.yeeach.HelloWorldService</source>
</properties>
</destination>
3.6、设置Flex Build Path等相关属性
1)右键->Properties,设置Flex Build Path属性,将Main source folder修改为flex-src,然后点击“OK”
2)右键->Properties,设置Flex Applications属性,添加flex-src下的其他Application,然后点击“OK”
如果需要添加flex-src子目录下的其他Application(例如helloworld/flex-src/com/yeeach /helloworld1.mxml),目前从UI界面似乎无法正确添加,可以直接修改.actionScriptProperties, 在<applications></applications>中间增加相应的Application
<applications>
<application path=”helloworld.mxml”/>
<application path=”com/yeeach.com/helloworld1.mxml”/>
</applications>
3)右键->Properties,设置Flex Compiler属性,将Flex SDK version 修改为“Use default”或“Use a specific SDK”,指向正确的Flex SDK;确认“Additional compiler arguments”配置参数正确,然后点击“OK”
blazeds6 4)右键->Properties,设置Flex Server属性,配置为正确的参数,然后点击“OK”
blazeds7
3.7、部署helloworld 应用到Tomcat
通过http://127.0.0.1:8080/helloworld/helloworld.swf来访问我们的hello world
3.8、分析helloworld.mxml
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”
layout=”vertical”>
<mx:RemoteObject destination=”com.yeeach.HelloWorldService”
id=”helloWorldService”>
//此处的destination=”com.yeeach.HelloWorldService”与remoting-config.xml中的id=”com.yeeach.HelloWorldService”完全匹配
//id=”helloWorldService”用来在actionscript中标识destination=”com.yeeach.HelloWorldService”,后面的helloWorldService.hello(inputVar)等都使用此id;
<mx:method name=”hello”
result=”sayHelloResult(event)”/>
//mx:method 声明java类com.yeeah.com.HelloWorldService中的hello方法及响应结果回调函数sayHelloResult
<mx:method name=”world”
result=”sayWorldResult(event)”/>
</mx:RemoteObject>
<mx:HBox>
<mx:Label text=”输入:”/>
<mx:TextInput id=”inputStr”/>
<mx:Button label=”say hello”
click=”sayHello(event);”/>
<mx:Button label=”say world”
click=”sayWorld(event);”/>
</mx:HBox>
<mx:HBox>
<mx:Label text=”结果:”/>
<mx:TextArea id=”result”/>
</mx:HBox>
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
function sayHello(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.hello(inputVar);
}
function sayWorld(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.world(inputVar);
}
private function sayHelloResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
private function sayWorldResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
]]>
</mx:Script>
</mx:Application>
以下是基于MyEclipse Ide编写的一个例子~
包括 helloword 及一个 flex与servlet连接的例子~
分享到:
相关推荐
Flex与Java通信采用blazeDS的方式的例子,源程序,helloworld
NULL 博文链接:https://zpap.iteye.com/blog/519325
flex3不能直接与服务器资源进行交换,借助BlazeDS 工具达到,flex3与服务器资源进行交换的目的
本文档阐述了BlazeDS整合Flex示例,包括开发环境、开发依赖库、创建Java工程、Flex客户端程序
用一个HelloWorld例子手把手教会你使用FLEX BlazeDS
有HelloWorld,Flex和Java之间的通信,BlazeDS需要下载,按上面说明即可
blazeds之helloworld篇 最基础的实现amf通信 环境tomcat+flex builder+myeclipse
折腾了一周的时间想做个flex+java的helloworld例子,可是怎么都运行不出来,今天终于运行出来了。 总结,共有一下几种方法: 1,flex项目和web项目在同一项目。 2,flex项目和web项目为两个项目,进行交互。 ...
把要用blazeds公开给flex的java方法配置在flex-servlet.xml中 把spring整合其它框架的方法的配置放在spring文件夹中。 很有条理 用remoteObject做的helloWorld。 适合新手入门和老手改用spring3来做项目。 如要交流...
基于flex4技术从零开发flex博客系统 : 1 开发环境配置与hello world(1) - 豆豆网 flex+blazeDs与Ext+dwr比较_蓝色幻想_百度空间 基于blazeDS的flex4与spring的程序实例步骤 - dreamming_now的专栏 - CSDN博客 在...
1 21 跟我StepByStep学FLEX教程------Flex和Java通信之BlazeDS 1 22 跟我StepByStep学FLEX教程------Flex和Java通信之开发方式和工具准备 1 23 跟我StepByStep学FLEX教程------Flex+LCDS(BlazeDS)+Java开发 1 24 ...
BlazeDS, Multi-lingual ; remote j2EE class for flex; BlazeDS with Java
flex与BlazeDS相连输出HelloWorld