承接http://www.cnblogs.com/frostbelt/archive/2010/08/10/1796202.html
现在要用JAVA做后台,即把Flex和J2EE结合起来。
完成上述步骤后,再把MyEclipse套上。我的eclipse是3.3.1的,MyEclipse是6.0的。装上tomcat6.0.29,在MyEclipse中配置tomcat的路径。这些不再详述,大家应该都会的。
到网上找个BlazeDS的包,下载的zip包里面包含了:blazeds.war:主要的BlazeDS war文件,用来建立你的BlazeDS应用程序。Sample.war就是BlazeDS例子了。Ds-console.war,简单的BlazeDS部署管理程序。而且必须把这三个war文件部署在Tomcat_Home(tomcat安装目录)下的webapps目录下。然后重启Tomcat服务器,在浏览器输入:http://localhost:8080/samples 如果看到显示页面代表就成功了(首先要把需要的数据源也导入进去)。
接着就可以在MyEclipse里建Flex工程了。
(1)建立Flex项目,首先在MyEclipse下打开Flex视图,右键建立Flex工程。
(2) 点击Next,配置J2EE服务器,如下图
填Target runtime栏的时候点右面的new,选apache的tomcat-6.0就可以了。
填Flex WAR file栏的时候点右面的Browse,Flex WAR file 指的是安装了lcds后的flex.war文件的路径,但是在这里我们采用的是BlazeDS来取代lcds,所以这里设置的是blazeds.war的路径。因此Browse里直接选CATALINA_HOME(tomcat安装目录)下的webapps目录下的拷贝进来的blazeds.war就可以了
Output folder 指的是Flex编译后的swf和html等文件存放的路径,这里改为了WebRoot,意思是发布到根目录就可以了。当然你可以根据你的需要和习惯自行设置其他的路径 。
(3) 点击下一步,采用默认的配置就可以,点击完成,该工程就建立完成。下图为该工程的目录结构
(4) 让它变成web工程由MyEclipse发布, 在项目上右键,向Flex项目中加入Web支持(作用:为了让Tomcat可以加载此项目,因为Tomcat只可以加载Web项目),如下图所示:
(5)右键项目 -> 【MyEclipse】-> 【 Add Web Project Capabilities】进入如下页
将下面的Create web.xml这一项的对勾去除(因为项目下面已经存在了web.xml文件,所以去除掉。),点击“Finish”按钮即可。
(4) 项目已经全部搭建完成。(可以发现项目的图标变为两个地球的样子)现在我们的工程的图标变成了J2EE Web 工程了,这意味着,你可以 用MyEclipse来发布它或者添加更多容器,比如hibernate、spring等 。
测试例子
(1)创建Java文件。点击src文件夹,然后创建java类的包为hello,名字为HelloWorld.
package hello;
public class HelloWorld {
public String sayHelloTo(String str) {
System.out.println("Hello " + str);
return "Hello " + str; }
}
(2)在FirstFlex.mxml文件中新建一个text和一个按钮,来显示从HelloWorld传回来的信息。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[ import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
private var helloResult:String;
private function sayHelloTo():void {
ro.sayHelloTo(inputText.text);
}
private function resultHandler(event:ResultEvent):void {
helloResult = event.result as String;
} ]]> </mx:Script>
<mx:RemoteObject id="ro" destination="helloworld" result="resultHandler(event)" />
<mx:HBox width="100%">
<mx:TextInput id="inputText"/>
<mx:Button label="Submit" click="sayHelloTo()"/>
</mx:HBox>
<mx:Label text="{helloResult}"/>
</mx:Application>
(3)现在,我们要定义remote object,让flex程序能够调用java类。首先来配置/WEB-INF/flex/remoting-config.xml文件,添加以下粗体部分来新增一个destionation—HelloWorld类。
<?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>
<destination id="helloworld">
<properties>
<source>hello.HelloWorld</source>
</properties>
</destination>
</service>
(4)到此,配置结束。然后选择此项目,选择在服务器上执行。即浏览地址为:http://localhost:8080/FirstFlex/FirstFlex.html如果你能在输入框输入字段之后,点击按钮能返回Hello,XXX的信息,就代表成功了。