浏览 10881 次
锁定老帖子 主题:flex使用BlazeDS远程调用java
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-18
最后修改:2009-05-18
什么是BlazeDS呢?BlazeDS是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术,它能够使得后台的Java应用程序和运行在浏览器上的Flex应用程序相互通信。 1.下载BlazeDS:http://opensource.adobe.com/wiki/display/blazeds/Release+Builds ——》》Download the BlazeDS binary distribution 2.下载完后将里面的 blazeds.war 文件解压到tomcat的webapps 目录下,然后启动tomcat,在webapps下生成了blazeds文件夹,关闭tomcat。 3.打开blazeds文件夹,在WEB-INF文件夹下有个flex文件夹,其中包含是个xml文件:messaging-config.xml、proxy-config.xml、remoting-config.xml、services-config.xml,这些文件对应相应的服务:远程调用(在remoting-config.xml中配置)、访问代理(proxy-config.xml)、消息服务(messaging-config.xml),同时框架允许你添加自定义的服务(在services-config.xml中配置)。 1.远程调用。其实框架在这里起到的作用和struts等服务端的框架差不多,都是任务分配的功能,只不过blazeDS支持客户端直接对象调用,一方面提高了数据传输速度,另一方面省了在客户端写url,但是它需要编译客户端的时候关联服务端配置文件,烦!综合考虑优缺点,这个功能还是值得使用的。 2.访问代理。能够提供权限控制,和跨域访问的能力。这个任何web服务器都能做到(加httpClient转发么),没什么特殊之处。 3.消息服务。这个正式blazeDS 牛的地方,它能向普通的浏览器客户端页面推送数据,而不需要建立socket链接。这个应用在很多地方都有用到,比如股票信息即时刷新,在线聊天等等需要实时数据推送的场景。 接下来做个远程调用的hello world例子: 简单描述下开发环境: IDE:Flex Builder 3 服务器:tomcat6.0 1.写个java类:helloWord package com.flex.test; public class HelloWorld { public HelloWorld() { } public String getHelloWorld() { return "Hello World!"; } } 编译HelloWord,并把编译的class文件放到刚才下载的blazeds.war 下的\WEB-INF\classes文件夹下,注意:我们把HelloWorld打包到了com.flex.test;所以同样需要在classes文件夹下创建com\flex\test这些文件夹,然后把HelloWorld.class放到\WEB-INF\classes\com\flex\test下。 2.接下来配置remoting-config.xml文件: 在</service>标签前加入: <destination id="helloWorld"> <properties> <source>com.flex.test.HelloWorld</source> </properties> </destination> 其中id属性我们在flex调用的时候会用到,source结点描述了完整的包路径和类名。 3.创建Flex项目:HelloWord 4.编辑HelloWord.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.collections.ArrayCollection; import mx.rpc.remoting.mxml.RemoteObject; import mx.controls.Alert; import mx.rpc.events.ResultEvent; public function submit():void{ var remote:RemoteObject = new RemoteObject(); //调用在J2EE端remoting-config.xml中配置的暴露出的类的名称 id remote.destination = "helloWorld"; //调用J2EE端类中的方法 remote.getHelloWorld(); //监听调用成功事件 remote.addEventListener(ResultEvent.RESULT,result); //监听失败事件 remote.addEventListener(FaultEvent.FAULT,fault); } private function result(evt:ResultEvent):void{ Alert.show(evt.result.toString()); } private function fault(evt:FaultEvent):void{ Alert.show("调用失败!"); } ]]> </mx:Script> <mx:Button click="submit()" label="hello" horizontalCenter="0" verticalCenter="0"/> </mx:Application> 5.重起tomcat,然后运行HelloWorld.mxml。 附件包含:blazeds.war和Flex项目:HelloWorld,运行例子只需要把blazeds.war放到tomcat的webapps目录下,然后运行HelloWorld.mxml即可。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-27
然后运行HelloWorld.mxml即可。
怎么运行啊,HelloWorld.mxml |
|
返回顶楼 | |
发表时间:2009-11-27
选中文件 单击鼠标右键,选择 run application
|
|
返回顶楼 | |
发表时间:2009-11-29
哥们儿,能不能搞点儿复杂的例子,比如struts2与flex什么的
|
|
返回顶楼 | |
发表时间:2009-11-30
wangdgsc 写道 哥们儿,能不能搞点儿复杂的例子,比如struts2与flex什么的
flex我也只是简单的了解一下,你想要学点如何集成到现有的j2ee应用,可以看下这篇文章:http://www.ibm.com/developerworks/cn/java/j-lo-jeeflex/?ca=drs-tp4608 |
|
返回顶楼 | |
发表时间:2010-01-26
请问下 你是不是把flex和java项目是分开在开发的?这个例子?
|
|
返回顶楼 | |
发表时间:2010-01-26
为什么我照你的配置 总是弹出调用失败?我现在正在看java与flex通讯部分 总是看不明白
|
|
返回顶楼 | |
发表时间:2010-01-26
azhqiang 写道 请问下 你是不是把flex和java项目是分开在开发的?这个例子?
引用 编译HelloWord,并把编译的class文件放到刚才下载的blazeds.war 下的\WEB-INF\classes文件夹下,注意:我们把HelloWorld打包到了com.flex.test;所以同样需要在classes文件夹下创建com\flex\test这些文件夹,然后把HelloWorld.class放到\WEB-INF\classes\com\flex \test下。
|
|
返回顶楼 | |
发表时间:2010-01-26
azhqiang 写道 为什么我照你的配置 总是弹出调用失败?我现在正在看java与flex通讯部分 总是看不明白
tomcat有没启动? |
|
返回顶楼 | |