http://zhan.zhmy.com/archives/2010/158552.html

【转】使用BlazeDS实现Java和Flex通信之hello world
1
推荐

新的项目对用户体验及用户互动要求较高,决定选用Flex作为前端的展现技术,整体框架仍然是Flex+Spring+Hibernate(考虑采用seam中)。作为入门,先从经典的Hello world开始,暂时不考虑Flex与Spring、Hibernate的集成。

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

在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的相关代码

helloworld/src:用于存放项目的java代码

helloworld/flex-src:用于存放项目flex的相关代码

helloworld/WebRoot/WEB-INF/flex:存放flex的相关配置文件

3.3、设置Flex Project Nature

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”

4)右键->Properties,设置Flex Server属性,配置为正确的参数,然后点击“OK”

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>

代码文件:helloworld.rar

====http://www.jexchen.com/?p=87

Flex+BlazeDS+Java初步:环境配置与“Hello,World”

12月 30th, 2008 Posted in BlazeDS, Flex3, LCDS, RIA

好久没更新文章了,问题多多的2008就要过去了,希望来年是个好兆头,大家都平平安安…

其实很早就接触过Flex BlazeDS Java结合使用,最初还用的是FDS(Flex Data Service,早已更名为LiveCycle Data Service),不过从来没实际在项目中用过,由于现在的做的产品主要就是在这个架构上运行,因此有必要重新学习学习。

Flex+LCDS(BlazeDS)+Java这种方式对大型的企业级相关应用是比较好的选择。

网上关于Flex + BlazeDS + Java的安装配置文章很多,大都是按照官方的方式,使用向导的方式来进行的,而且通常使用的是BlazeDS Turkey(集成了Tomcat的BlazeDS版本),而且使用了WTP(Web Tools Platform的简称,允许开发人员在Eclipse下开J2EE Web应用),虽然配置比较简单,但由于采用向导的方式,实际上并不灵活,通过实践,推荐下面一种比较灵活的方式 ^_^我会将我在安装配置的过程遇到的常见问题一并指出,我自己做个记录,大家也可少走点弯路

我用的软件环境:

JDK 1.6

Eclipse 3.4.1

Flex 3 plugin for Eclipse (升级到Flex 3.0.214193,Flex SDK为3.2)

Sysdeo Eclipse Tomcat Launcher plugin (一款Eclipse下的Tocamt插件)

Tomcat6.0.13 (我用的是zip包,直接解压就用)

BlazeDS (我下载的是 blazeds-bin-3.2.0.3978.zip)

其中Tomcat的插件下载地址为:http://www.eclipsetotale.com/tomcatPlugin.html#A1 其它的相关软件大家应该都知道。

安装:

上面的所有工具安装都很简单,注意安装后请配置好JDK与Tomcat的环境变量,BlazeDS这里不需安装,下面讲 Hello World再说怎么使用。

Tomcat Launcher plugin插件安装好后,在eclipse中配置如下:

然后一步一步来创建Hello World:

先看一下完成后的项目结构图:

一、创建Java项目:

选择new->Java Project创建一个普通Java项目,其中注意的是为了与flex源文件目录区分,将java项目的源文件目录自定义为javasrc,并设定java class默认的输出目录,如下图:

(创建完成后可将本身的src目录删掉)

创建一简单的HelloWorldService类,用来当Flex端通过BlazeDS以RemoteObject的方式直接访问,SimpleService.java内容很简单,如下:

   1: package com.jexchen.blazeds;
   2:
   3: public class HelloWorldService {
   4:     public String sayHello(String str) {
   5:         return “Hello, “ + str;
   6:     }
   7: }

将blazeds-bin-3.2.0.3978.zip解压,得到flex.war, war其实就是一打包文件,使用解压软件将其解压,得到META-INF与WEB-INF两个目录,将WEB-INF目录下的flex、lib目录及web.xml文件复制到当前应用程序的WEB-INF目录下,在HelloBlazeDS项目上点右键,刷新,这时eclipse中HelloBlazeDS项目目录结构如下图所示:

二、为当前Java项目增添Flex Project支持

在HelloBlazeDS项目上点击右键,选Flex Project Nature –> Add Flex Project Nature如下图:

不选任何服务器支持,呆会手动配置:

指定Flex的编译生成目录至WEB-INF\flex,其中flex目录为新创建的:

按提示,切换到Flex视图,这时会报一个错误

在错误提示信息上点击右键,选择Recreate HTML Templates,为生成的swf重建HTML模板。

三、增添Tomcat服务器支持

在HelloBlazeDS项目上点击右键,选择Properties,打开的配置面板中选择Tomcat,设置参数如下:

完成设置。

(你会发现在我的d:\tomcat6.0.13\conf\Catalina\localhost\目录下生成了名为hello.xml的文件,生成该文件的目的就是为HelloBlazeDS项目在Tomcat下配置了一个独立的Context,这样就不必将文件布署到Tomcat的webapps下去了。

四、完成BlazeDS配置并创建Flex客户端程序

编辑WEB-INF\flex\remoting-config.xml文件,增添下面的语句:

   1: <destination id=”helloservice”>
   2:     <properties>
   3:         <source>com.jexchen.blazeds.HelloWorldService</source>
   4:     </properties>
   5: </destination>

在src下创建Flex应用程序HelloBlazeDS.mxml (MXML Application类型),代码如下:

   1: <?xml version=”1.0″ encoding=”utf-8″?>
   2: <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”vertical”>
   3: <mx:Script>
   4:     <![CDATA[
   5:         import mx.controls.Alert;
   6:         private function onCall():void {
   7:
   8:             myService.sayHello(nameInput.text);
   9:         }
  10:     ]]>
  11: </mx:Script>
  12: <mx:RemoteObject id=”myService” destination=”helloservice” endpoint=”http://localhost:8080/hello/messagebroker/amf” />
  13:     <mx:TextInput id=”nameInput” />
  14:     <mx:Button label=”Call” click=”onCall()”/>
  15:
  16:     <mx:TextArea text=”{myService.sayHello.lastResult}” />
  17: </mx:Application>

需要注意的是Flex compiler的参数设置,我们这种完全手动配置的情况尤其需要注意,下面是我的参数配置,具体含义请查看相关资料:)

-context-root “webRoot” -services “e:/workspace/javaeeworkspace/HelloBlazeDS/webRoot/WEB-INF/flex/services-config.xml” -locale en_US

ok,现在可以点击工具栏上的小猫图标,启动Tomcat了,在浏览器输入以下地址:

http://localhost:8080/hello/flex/HelloBlazeDS.html

运行运行~~~效果如下:

使用BlazeDS实现Java和Flex通信之hello world相关推荐

  1. 使用BlazeDS实现Java和Flex通信

    使用BlazeDS实现Java和Flex通信 Posted on 2010-01-13 17:22  疯狂 阅读(4528)  评论(0)   编辑   收藏 所属分类:  flex  world 转 ...

  2. flex 发送到java_(转)java与flex通信

    (转)java与flex通信 一.准备: 服务端:JDK1.5 (这个不用介绍了吧?) 服务端IDE:eclipse (它的主页) 客户端:FLEX 3 (Adobe® Flex® 3 是用于构建和维 ...

  3. java与flex通信_Flex与Java通信教程

    Flex与Java通信教程 Flex与Java通信框架搭建的步骤: 1. 新建web项目,并启动tomcat运行,检查一切是否正常(必须): 2. 导入所需的jar包(我已给出),将需要用的四个XML ...

  4. java后台 flex前台例子_flex+blazeds+java后台消息推送(简单示例)

    现在有个问题需要大家思考一下,有个已经上线了的项目,有好好几千甚至上万的客户在使用了.现在项目开发商想发布一个通知.在今天下午6点需要重新启动服务器,想让在线的人在在预定的时间内都收到消息,让大家做好 ...

  5. java整合flex

    java+flex项目整合 java+flex 2010-12-20 16:11:12 阅读59 评论0   字号:大中小 订阅 第一种:javaproject和flexproject独立 这样的方式 ...

  6. java的flex开发_繁忙的Flex Java开发人员指南

    java的flex开发 除非您在过去的四年左右的时间里一直从相当大的巨石下面编写代码,否则对于所有出色的孩子来说,"富Internet应用程序"或" RIA"的 ...

  7. Flutter开发Flutter与原生OC、Java的交互通信-2(48)

    我们上一篇主要讲了Flutter与原生OC.Java的交互通信的机制:平台通道 只实现了Flutter 主动调用OC.Java的方向的通信.并没有实现OC.Java端主动调用Flutter的实现.这里 ...

  8. Flutter开发Flutter与原生OC、Java的交互通信-1(47)

    我的文章讲过:(0085)iOS开发之OC与JS交互高级用法(JavaScriptCore) 前言:我们知道OC 在UIWebView 加载 H5中,常常需要OC 与 H5 之间进行交互调用.采取的方 ...

  9. Java中Socket通信-客户端与服务端相互传输对象数据

    场景 Java中Socket通信-服务端和客户端双向传输字符串实现: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1084885 ...

最新文章

  1. pycharm调试有哪些功能工具
  2. lisp 任意点 曲线距离_数学篇|看完这篇,秒杀所有圆锥曲线小技巧
  3. 安卓应用在各大应用市场上架方法整理
  4. 如何确定电脑主板坏了_【不良资产 】(第1422期)银行在打包不良资产出售之前,会如何处置不良资产?...
  5. 10月12日云栖精选夜读:【直击2017杭州·云栖大会】TECH INSIGHT企业迁云实战专场...
  6. java mqtt协议_基于 tio 实现 mqtt5 协议之 micamqtt
  7. cs精英游戏python代码_python面向对象-cs游戏示例
  8. VMware虚拟机Bridged(桥接模式)
  9. java接口的作用和意义_java什么是接口?接口有什么作用?接口如何使用?
  10. python模板代码替换_Python - 安全替换字符串模板(safe_substitute) 详细解释
  11. 主键重复和唯一索引冲突_深入了解数据库索引
  12. 共同富裕指数集:31省份共同富裕-富裕度、共同度两大维度数据(2000-2021年)
  13. python爬取电子病历_电子病历患者查询
  14. 邮箱 手机号 格式要求
  15. 直播组装服务器,快速搭建直播服务器
  16. android实现歌词的自动滚动
  17. 基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署
  18. kali linux外网渗透指定ip,kali Linux局域网渗透之win10
  19. UVA1665 Islands (并查集)
  20. 目标检测2——借Detectron2源码理解Anchors与RPN

热门文章

  1. 编译原理习题(含答案)
  2. 【STM32】OLED简介
  3. 【Linux系统编程】POSIX无名信号量
  4. 【Linux】一步一步学Linux——umask命令(111)
  5. 【Ubuntu】 Ubuntu16.04快速搭建环境
  6. php的工作流程是什么,工作流程 · PHP-ML中文文档 · 看云
  7. oracle的三个管理,Oracle数据库的在空间管理三个技巧是什么?
  8. 函数使用了堆栈的字节超过_单片机地址空间,堆栈理解
  9. python向mysql中添加数据_通过python操控MYSQL添加数据,并将数据添加到EXCEL中-阿里云开发者社区...
  10. 每天一道LeetCode-----逆序链表