最近项目中要画一个网络拓扑图,使用的是JSP页面,要在页面上动态画拓扑,想用Flex来做,之前也考虑使用SVG做,但由于对SVG不熟悉,所以尝试使用Flex做。
整个工程是需要前台的Flex去调用Java的代码,然后把需要的数据读取到Flex中,再使用Flex来绘制拓扑图。
下面来介绍一下我使用的Flex与Java的交互方式。
【开发工具】MyEclipse 6.5 + FlexBuilder 3.0
【相关包】blazeds.war
blazeds是一套面向actionscript的前后台通信框架。
在服务器端,blazeDS以servlet的方式存在于java应用服务器上。它默认提供3中服务,远程调用
(在remoting-config.xml中配置)、访问代理(proxy-config.xml)、消息服务(messaging-config.xml),同时框架允许你添加自定义的服务(在services-config.xml中配置)。
下载地址:http://download.macromedia.com/pub/opensource/blazeds/blazeds_bin_3-0-0-544.zip
【创建Flex调用Java的工程】
1、在MyEclipse中创建一个java web工程,名称为FlexTopTest,位置是D:\workspace\FlexTopTest
2、将下载的blazeds_bin_3-0-0-544.zip解压,再将解压出的blazeds.war解压缩,将里面的WEB-INF下面的文件拷贝到java web工程的WEB-INF下。
3、在java web工程中新建一个类,用于测试Flex与Java交互是否成功。类名是HelloWorld
代码如下:
1 package com.top;
2
3 /**
4 * 测试Flex调用Java类
5 * @author 杜鹏
6 *
7 */
8 public class HelloWorld {
9 public String sayHello() {
10 System.out.println("Flex call java success.");
11 return "success";
12 }
13 }
4、在WEB-INF/flex/remoting-config.xml中添加destination节点
代码如下:
<?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="fcj">
<properties>
<source>com.top.HelloWorld</source>
</properties>
</destination>
</service>
5、在FlexBuilder中建立Flex工程
(1)选择Application server type 为J2EE
(2)选择已经建立好的web工程,这里为FlexTopTest
刚建立的Flex工程如果提示错误:Server SDK: Directory does not contain a Flex SDK.提示新建的web工程没有包含SDK,可以右键点击Flex工程,选择Properties-->Flex Compiler,在对话框中修改Flex SDK version为第一个或者第二个选项。
6、编写Flex的测试代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" creationComplete="init();">
<mx:Script>
<![CDATA[
private function init():void{
txt.text=helloWorld.getString();
}
]]>
</mx:Script>
<mx:TextInput id="txt"/>
<mx:RemoteObject id="helloWorld" destination="fcj"/>
</mx:Application>
7、启动tomcat,运行Flex工程,快捷键是[ctrl+F11]
如果控制台中输出“Flex call java success.”则说明Flex程序已经可以调用Java程序了。