您的位置:首页 > 编程语言 > Java开发

flex+blazeds+java(将java整合到flex中)

2010-09-25 19:28 716 查看
最近项目中需要Flex与Java进行通信,初步选定使用BlazeDS。看见网上很多HelloWorld的例子都没运行起来,所以决定把自己的经验总结一下分享给大家。

配置Flex和Java Web项目的开发的开发环境,这里就不再赘述了,我使用的是Eclipse JavaEE + Flex Builder。

下载BlazeDS压缩包,好像有三种版本(Turkey、bin、source), 我用的是bin,解压后里面有一个blazeds.war。

在Eclipse中新建一个Flex Project名为BlazeApp,服务器选J2EE。

J2EE Settings中的Flex war File选择BlazeDS解药后得到的blazeds.war。

建完工程后需要修改一下Context root,右键-> Properties -> Flex Server -> Context root 改成/BlazeApp.

在src目录下新建包demo,在包下新建类HelloWorld,代码如下

Java代码

package demo;

public class HelloWorld {

public String sayHello(String name){

System.out.println("Hello "+name);

return "Hello "+name;

}

}

package demo;

public class HelloWorld {

public String sayHello(String name){
System.out.println("Hello "+name);
return "Hello "+name;
}
}

修改WebContent/WEB-INF/flex/remoting-config.xml,在其中加入

Xml代码

<destination id="Hello">

<properties>

<source>demo.HelloWorld</source>

</properties>

</destination>

<destination id="Hello">
<properties>
<source>demo.HelloWorld</source>
</properties>
</destination>

修改BlazeApp.mxml,代码如下

Mxml代码

<?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.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)"/>

<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>

<?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.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)"/>
<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://localhost:8080/BlazeApp/BlazeApp.html,试试看~

注:在Flex4中运行上面例子可能会报错,需要在定义RemoteObject的的时候加上如下参数
Xml代码

endpoint="messagebroker/amf"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: