??xml version="1.0" encoding="utf-8" standalone="yes"?> 1.希望在myeclipse里面可以创徏flex目?/p>
2.在flex中编辑的mxml文gQ保存后能够自动的生成flash文g和html文g以供试Q当然正式发布的时候很多的HTML是要删除的?/p>
3.利用myeclipse在工E中实时同步机制Q把我们~译后的flash和html文g直接同步到web工程Q然后工E自动部|到tomcatQ这h试就很方便了Q因为同步flash和html文g到tomcatҎ׃用重新启动?/p>
注意我们的关键点本质上只是把flex目的编译输出直接到web工程?/p>
好了Q现在开始准备工P 环境搭徏Q?/strong> Java5.0Qtomcat5.5Qeclipse 3.2(及以?QmyeclipseQ?.5及以上)QFB3_WWEJ_Plugin.exe{等Q按序都把他们先装上,然后myeclipse里面配置好tomcatq个׃详细说了。然后去下蝲个blazedsQ这个自己去搜烦吧!(我的附g里面? blazeds与web工程的搭建: myeclipse中先创徏个web目myflexQ注意要导入blazeds里面的相关jar,web.xml,q有WEB-INF里面flex目录下面的所有文件。最好的操作Ҏ是,先把blazeds解压Q然后再新徏的工E里?span style="font-family: Times New Roman">WebRoot -> 右键 -> import -> File System -> next -> 选择你解压后?span style="font-size: 10.5pt">blazeds 目录Q?/span> finish。这样会有提C是否要覆盖Q点yes to allOK了?/span> 接下来在服务器端可以单的写个helloWorld的类了,相关的配|弄?/span>
package com.spell; public class HelloWorld { public String sayHello(String name) { return "hello," + name; } } ?/span> WebRoot/WEB-INFO/remoting-config.xml 中加?/span> id="Hello" ?/span> destination <destination id="Hello"> <properties> <source>com.spell.HelloWorld</source> </properties> </destination> ok,可以部v到tomcat了,q且启动tomcatQ这个时候不要着急着L?/p>
flex工程的搭建: q个是最让h恼火的地方了Q这个地方上我走了很多的弯\Q看那了|络上很多h所谓的配置Q结果差Ҏ我给搞死。后来还是自q思\清晰炏V?/span> Zflex工程Q输入工E的名称flexTestQapplication type 选择 web application, server technology 选择noneQ点nextQ?strong>output folder 中选择你上面徏立web工程的目?MyEclipse里就是myflex工程目录下的WebRoot?Q?/strong> q个很重要了Q要不这边flex׃会自动到web工程了,那只有h工的拯了,q样做是很悲哀_Q最后finishQ好了这样flex工程也好?/span>
flexTest.mxml文g q个文g好了后,你只要保存下可以敲入URL试了(保存后马上就output到myflex目中了Q然后又自动同步到tomcatQ前面tomcat已经启动了)Q我的是http://localhost:8080/myflex/flexTest.html Q表单中输入名字Q然后点下按钮,p你说hello了,是不是很兴奋了,恭喜flex你入门了。这里一定要指定endpointQ?/strong> 要不然与服务器的交互会失败,endpoint?myflexҎ你web目的名UC同而不同。endpoint不要指定死,如:http://localhost:8080/myflex/messagebroker/amf Q这样到了以后部|的时候是会有错误的?/span> BlazeDS 是一个基于服务器?Java q程控制 (remoting) ?Web 消息传?(messaging) 技术,它提供了 Java 应用E序和运行在览器上?Adobe Flex 应用E序怺通信的一U手D,q且是一U高效的手段。也是说它实现?Java ?Flex 的无~集成?/p>
BlazeDS是开源的QAdobe原来有一个商业版本,q是商业版本的开源化的品,功能比商业版本少一些,但基本满需要?/p>
Flex与后台服务器上的应用E序通信的手D|三个Q?br />
(1) HTTPService: 采用标准的HTTPhQ服务器q回 XML 格式的消息; 据说 BlazeDS q将开发适用?.net ?PHP 版本Q不q采用相同技术(RemoteObjectQ的各种开源品也已有多种了,可在 Java, .net, PHP下用?/p>
本文的目的是详细说明BlazeDS开发环境的安装Q以及创建BlazeDSr?Hello, world! 目的过E?/p>
一、相兌Y?br />
1、安?Java JDK 5.0 以上版本Q?br />
q是必备的?br />
2、安?Eclipse 3.2 以上版本Q?br />
q也是必备的?br />
3、安?MyEclipse 6.0 以上版本Q?br />
它用于开?J2EE 目Q可~写 Java E序Q编写网늭?br />
4、安?Flex Builder 3 Plug-in版本Q不能用独立版本Q; 二、安装过E?br />
1、安?Java JDK 5.0 ?6.0Q注意不是JREQ只要一?Next pQ?br />
安装完要作环境变量配|: 2、安?Eclipse 3.2Q只要解压羃CQ意一个目录中Q?br />
直接q行其中?eclipse.exe 文g卛_Qؓ提高q行速度Q可为其分配更多的内存,卌行时加上下述参数Q?br />
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 3、安?MyEclipse 6.0 以上版本Q在安装q程中需要指?Eclipse 的位|,然后一?Next卛_Q?br />
安装后运行MyEclipse或eclipse都同h打开MyEclipseQ?/p>
4、安?Flex Builder 3 Plug-in版本Q可以安装在L的目录中Q在安装q程中同样需要指?Eclipse 的位|,然后一?Next 卛_Q?br />
安装后需配置 eclipseQ?br />
在上q第2步中的eclipse目录下创Z个目录,名ؓlinksQ如果已l存在该目录Q通常是已有了Q,则用原有的Q?br />
在links目录下新Z个文Ӟ名ؓ flex.linkQ文件名L,后缀必须是linkQ,内容为path=Flex Builder 3 Plug-in的安装目录,例如Q?br />
path=D:\\program\\Adobe\\Flex Builder 3 Plug-in 5、安?tomcat 6.0Q将文g解压~到L目录中?/p>
6、BlazeDS 在创建项目时用; 三、创建Hello, workd目Q?br />
下述步聚创建名为web的一个集成Java的Flex目, 需要时q可以添?hibernate, spring能力。下面的web都是指项目名Q可以改Z的项目名?br />
1、创Z个MyEclipse的Web Project目Q?br />
在MyEclipse中,选择 File -> NewQ在弹出的菜单中?Web ProjectQ如果看不到该选项Q则?OthersQ然后再选: 2、ؓ目配置服务?br />
首先启动 tomcat 服务器: 3、将 BlazeDS 解压~到目中,步聚如下Q?br />
下载的 BlazeDS.war 文g改后~名ؓ zipQ然后解压羃CQ意的目录中,再将解压~出来的二个文g夹移动或复制到前一步中创徏的项目中?br />
注意Q这两个文gҎMETA-INF和WEB-INFQ要把它们覆盖上一步创建的目中的同名目录Q仅是目录名相同Q文件是不同的?/p>
复制后不要忘记重新发布一下项目,否则下一步不能做?/p>
4、ؓ目dFlex Project NatureQ?br />
q一步比较重要,必须是在前述所有步聚正完成后才能q行Q?br />
从项目右键菜单中选择 Flex Project Nature -> Add Flex Project Nature (在选择中是W二个选择)Q?br />
在弹出的H口中的Application server type 选择 J2EE; 目创徏成功 4、测试Flex 前端Q?br />
先测?Flex 前端Q在web.mxml文g中增加一行,d一个LabelQ整个文g内容如下Q?/p>
按执行按钮,q时应该弹出览器窗口,能看到页面的内容 Hello, World! 5、测试与Java的集成: 项目视囑ֈ换到 Flex Development 视图Q?br />
打开 WebRoot/WEB-INF/flex/remoting-config.xml文gQ将其修ҎQ?/p>
然后在web.mxml中,d一D代码(W?步增加的Label可以删除掉)Q其成为(可以直接复制使用Q有关代码的含义请参见其它资料)Q?/p>
]]>
------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
<mx:Script >
<![CDATA[ import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
private var helloResult:String;
private function sayHello():void {
ro.sayHello(inputText.text);
}
private function resultHandler(event:ResultEvent):void {
helloResult = event.result as String;
}
]]>
</mx:Script >
<mx:RemoteObject id="ro" destination="Hello" result="resultHandler(event)"
endpoint="/myflex/messagebroker/amf" />
<mx:HBox x="0" y="10" width="100%">
<mx:Label text="Name:" id="nameLabel"/>
<mx:TextInput id="inputText"/>
<mx:Button label="say Hello" id="nameButton" click="sayHello()"/>
<mx:Label id="resultLabel" text="{helloResult}"/>
</mx:HBox>
</mx:Application>
转自:http://holdbelief.javaeye.com/blog/227394
]]>
(2) WebService: 采用SOAP消息格式q行通信Q也是XML格式Q它是一U专门用于Web的业界标准;
(3) RemoteObject: 采用 AMF 消息格式q行通信Q这是二q制的格式,因此它的效率最高。BlazeDS是采用q个技术的?/p>
它用于开?Flex 前端界面?br />
5、安?tomcat 6.0 以上版本Q?br />
Web服务器,也可用其它的Q例如JBoss{?br />
6、下?BlazeDSQ有二个版本Q?br />
一是只?M大小的版本,q是核心Q?br />
二是166M的版本,UCؓblazeds-turnkeyQ它内置了tomcat以及文档、实例和支持实例的数据库pȝQHSQLQ,以及flex sdk?br />
本教E只需BlazeDS的核心,下蝲后备用?/p>
JAVA_HOMEQؓJDK的安装目录,?C:\Program Files\Java\jdk1.6.0_06
CLASSPATHQgؓ .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jarQ注意最前面的句P不能漏了Q?br />
pathQؓ安装目录下的 bin目录Qgؓ %JAVA_HOME%\bin
Ҏ是ؓ eclipse.exe 建立一个快h式,然后在快h式的属性中在eclipse.exe后加一I格Q再加上上述参数
注意目录的分隔符或者用“\\”Q或者用“/”Q前者ؓWindows风格Q后者ؓLinix风格Q?/p>
MyEclipse -> Java Enterprise Projects -> Web Project
在下一步中指定目的名Uͼ例如webQ在q一步中记得Source folder改ؓ另外的名字,例如javasrc或jsrcQ这是ؓ了避免与flex的源文g夹名冲突Q?br />
其它保留默认|完成目的创建?/p>
在tomcat解压~的目录中的bin下找?startup.bat 文gQ双击运行,q时打开一个命令行H口Q在整个开发过E中不要关闭q个H口Q否则tomcat停止了?br />
配置MyEclipse使用上述的tomcat 服务器;
项目发布到 tomcat服务器;
上述2个小步聚不会做的Q请查一下MyEclipse目的用的资料Q配|tomcatQ发布项目,启动和停止tomcatQ?br />
配置后可以用览器测试项目是否能正常q行Q?br />
http://127.0.0.1:8080/web/index.jsp
在下一个窗口中讄好合适的参数Q?br />
(1)反?Use default location for local LiveCycle Date Services server
(2)Root folder: 选择目发布的目录:例如QD:\program\tomcat6\webapps\web
(3)Root URL: 在浏览器中访问项目的|址Q例如:http://localhost:8080/web/
(4)Context root: 目的上下文Q一般就是项目名Q例如:/web
目必须是有BlazeDS的相兛_Q即上一步中复制到项目中Q然后再发布Cq设|的目录中?br />
讄好后Q还需要点?Validation configurationQ测试配|是否正,只有正确Ӟ才能l箋q行下去?br />
q时会出C个错误提C,当完成下q设|后Q错误将得到Ҏ。ƈ且整个项目创建完成?br />
修改目的Flex Compile选项Q?br />
从项目右键菜单中选择 Properties;
在打开的窗口中选择 Flex CompilerQ然后在双?User a specific SDK中?Flex 3.2?/p>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Label x="228" y="95" text="Hello, World!"/>
</mx:Application>
项目切换到MyEclipse Java Enterprise 视图
在javasrc中按需要创建包Q然后创Z个类Q?/p>
package org.ngweb.flex;
public class Hello {
public String sayHello(){
return "Hello, world!";
}
public String sayHello(String s){
return "Hello, "+s+"!";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object"
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true" />
</adapters>
<default-channels>
<channel ref="my-amf" />
</default-channels>
<!-- 新增的是下面六行Q其它没有改?-->
<destination id="helloWorld">
<properties>
<!-- q里要写完整路径Q包?+ cd -->
<source>org.ngweb.flex.Hello</source>
</properties>
</destination>
</service>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
private function resultHandler(event:ResultEvent):void {
Alert.show(event.result.toString(), "成功");
}
private function faultHandler(event:FaultEvent):void {
Alert.show(event.fault.toString(), "p|");
}
]]>
</mx:Script>
<!-- destination 属性D?remoting-config.xml ?destination ?id 一?->
<mx:RemoteObject id="remoteObject"
destination="helloWorld"
result="resultHandler(event)"
fault="faultHandler(event)"/>
<mx:Button label="发送消? click="remoteObject.sayHello('huang')" x="256.5" y="197"/>
</mx:Application>
]]>package {
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
public class MovingText extends Sprite
{
private var txt:TextField;
private var info:String;
private var ti:uint;
public function MovingText()
{
txt = new TextField();
txt.width =100;
txt.textColor=0xffff00;
txt.selectable=false;
txt.x=10;
txt.y=100;
this.addChild(txt);
info="There is not way that a bee cound bee able to fly";
info += "Their wings are too small to get it's fat little body off the ground.";
ti=0;
this.stage.frameRate=10;
this.addEventListener(Event.ENTER_FRAME,enterFrame);
}
public function enterFrame(e:Event):void
{
txt.text = info.substr(++ti,20);
if(ti>=info.length)
{
ti=0;
}
}
}
}
]]>