Flex+Java+Blazeds

1、环境:jdk1.6,Flex4.6

2、工具:MyEclipse10

3、服务器:Tomcat7

4、连接方式:Blazeds

5、项目类型:Flex项目

6、步骤

(1)新建Flex项目一个,命名为FlexToJava

填写项目名之后,点击“下一步”。

选择BlazeDS,勾选“使用WTP…”,点击下一步,下面默认,完成新建项目。

新建的项目目录如下

(2)将新建的项目加入到Tomcat中

启动Tomcat,运行FlexToJava .mxml页面,启动正常。

如果出现启动错误

在Tomcat目录conf下找到context.xml文件,增加一句<Loader delegate="true" />即可

(3)切换到Java端,新建一个Java类FlexToJava.java

(4)找到WebRoot\WEB-INF\flex目录下的remoting-config.xml,增加一段代码用于配置的Java类。这里的id就是Flex页面RemoteObject中的destination属性的值。

<destination id="myFlexToJava">
	<properties>
		<source>com.java.FlexToJava</source>
	</properties>
	</destination>

(5)找到前台的Flex页面——FlexToJava.mxml,写入代码调用后台的Java方法。

具体代码如下:

<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
   xmlns:s="library://ns.adobe.com/flex/spark"
   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
	import mx.controls.Alert;
	import mx.rpc.events.ResultEvent;

	protected function button1_clickHandler(event:MouseEvent):void
	{
		this.ro.getName(this.txt.text);
	this.ro.addEventListener(ResultEvent.RESULT,getName);
	}
	protected function getName(event:ResultEvent):void
	{
		Alert.show(event.result.toString());
	}
	//这里有两种处理返回值的方法,一是在RemoteObject中直接写入,还有一种是addEventListener
	private function error(e:FaultEvent):void {
		errorMsg.text=e.message.toString();
	}
]]>
</fx:Script>
<fx:Declarations>
	<s:RemoteObject id="ro" destination="myFlexToJava" fault="error(event)"></s:RemoteObject>
</fx:Declarations>
<s:Label x="65" y="80" text="名字"/>
<s:TextInput id="txt" x="97" y="73"/>
<s:Button x="250" y="74" label="获取" click="button1_clickHandler(event)"/>
</s:Application>

然后运行这个Flex文件,获得界面如下:

但是会报一个错

[RPC Fault faultString="Send failed"

faultCode="Client.Error.MessageSend"

faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404:

url: ‘http://localhost:8080/WebRoot/messagebroker/amf‘"]

观察这个错误,发现报的错中url这一项不对,我们的地址应该是http://localhost:8080/FlexToJava,而非http://localhost:8080/WebRoot,故而要修改一个地方。

进入项目的“属性”菜单,

选择Flex服务器,发现“内容文件夹”一项是“WebRoot”字样,记得把Flex编译器中编辑器参数改成

“-services "D:/Workspaces/FlexToJava/WebRoot/WEB-INF/flex/services-config.xml" -locale en_US”,不然会报错,因为Flex服务器修改后这边会自动把WebRoot改成FlexToJava,要改回来。

(6)重新部署项目,启动Tomcat,运行FlexToJava.mxml,填入姓名,点击按钮,弹出对话框。成功!

这里要注意URL,默认出的URL会少一个out目录,需要在运行配置中再配置一下。或者在项目属性菜单中,Flex构建路径菜单下,输出文件夹URL项目填入http://localhost:8080/FlexToJava/out,运行时就会出现out目录了。

后记

试了几回,看能不能一次成功,结果不行,都是要再配置Flex服务器中的内容文件夹,或者别的方法,这是我得出的比较明晰的一种方法了,大概还有更好的,可以一次成型,先凑合用吧。

这是从Flex端建Flex项目,然后嵌入Java的方式,还可以从Java端建Java Web项目,然后嵌入Flex,我试了几回也没成功,只是学到一些别的东西。

从Java端建Java Web项目时,有一步是解压Blazeds.war包,将得到的WEB-INF替换掉新建项目的WEB-INF,这里面主要替换的就是WEB-INF下的flex文件夹下的四个配置文件、几个必须lib包和web.xml文件。

其中,flex文件夹下的四个配置文件中的remoting-config.xml文件,我们从中配置了一段代码,这段配置就是指引flex如何访问java对象,同时也是指引Blazeds配置类映射的功能。另外这里配置的一定是实现类地址,不能是接口。services-config.xml文件,注册数据通道,下面这段代码就定义了一个通道,Flex就通过这个通道与服务器通讯。

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
	<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>

上面的url我们有些许似曾相识,与我们上面的一个报错“http://localhost:8080/WebRoot/messagebroker/amf ”很像吧,我们可以看出错误中WebRoot的位置应该放的是context.root(上下文根目录),不知道是中文翻译过来的问题还是什么别的,我们的错误修改了“内容文件夹”的值之后就解决了,但是这边的意思应该是取的“上下文根目录”的值。

关于Blazeds的知识和这几个配置文件的知识,还要继续学习。

时间: 2025-01-01 21:58:05

Flex+Java+Blazeds的相关文章

flex+java+blazeds 多通道好文

http://www.cnblogs.com/noam/archive/2010/08/05/1793504.html blazeds, spring3整合实现RPC服务和消息服务 环境: MyEclipse 7.5 Flash Builder 4 plugin for eclipse Tomcat 6 BlazeDS 4.0.0 springframework 3.0.3 Spring-flex整合 org.springframework.flex-1.0.3.RELEASE.jar (适用于

Flex3与java BlazeDS入门教程及其配置详解

原文:Flex3与java BlazeDS入门教程及其配置详解 源代码下载地址:http://www.zuidaima.com/share/1789445387160576.htm BlazeDS的下载和介绍: http://opensource.adobe.com/wiki/display/blazeds/Release+Builds(已经失效) 新的下载路径:http://sourceforge.net/adobe/wiki/Projects/或是http://www.pc6.com/sof

flex+java 项目创建 和 例子

我是一个java开发的,初次接触flex ,主要就是想研究一下flex怎么调用java.刚整通了 一个,下面总结一下: 我使用的是myeclipse6.0.1.flex builder3.0 1.创建flex项目:file -> new -> flex project 如下图 Application type 中选 第一个 web application, Server technology 中选择 j2ee, 勾选user remote object access service (否则无法

flex+java将数据库里的数据导出到指定目录下excel表里(poi)

数据写入到excel中采用的是Apache POI: //java后台的一个工具类(该工具类适用于为不同字段添加,方便) /* 下面这个方法是将list转换为Excel工作表的 */ public static HSSFWorkbook getWorkbook(List<ExporTable> list) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.creat

政府应急平台之GIS一张图-flex/java

开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.视频监控: 显示视频监控的位置所在和信息 2.危险隐患管理: 显示危险隐患在地图的位置以及详细信息 3.事故后果模拟: 以某点为中心,假如这个点发生危险品泄漏事故为前提进行模拟,在界面输入一系列的参数值,比如危化品数量,种类,泄漏半径等等. 4.应急资源管理: 5.在线编辑: 利用SDE来实现地图在线编辑功能

三防指挥决策支持系统GIS部分展示-flex/java

开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel,开发接口是arcgis api for flex,提供以下的功能: 1.实时水情: 2.实时雨情: 3.历史雨情: 4.视频监控: 5.危险隐患专题: 6.事件管理: 备注:更多的精彩内容请关注本人的淘宝店http://shop116521643.taobao.com

安全生产应急救援指挥系统之GIS一张图-flex/java

开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.地图框选搜索: 这是空间查询,在地图上框选一定的范围,然后搜索出在这个范围之内的所有信息,搜索到的详细信息在列表框显示出来 2.路径导航: 提供两种不同的方式进行路径导航实现,分别是单击地图上的两个或者多个不同的地方,或者是直接输入两个不同的地名,然后会在地图上进行路径导航的详细信息 3.事故后果模拟: 以某

GIS公交查询-flex/java

开发语言是flex.java,开发平台是myeclise.eclise,开发接口是arcgis api for flex,提供以下的功能: 1.站名-站名查询: 2.站点查询: 3.路线查询: 备注:更多的精彩内容请关注本人的淘宝店http://shop116521643.taobao.com

GIS管网项目-flex/java

开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.应急指挥: 2.汛情预警: 3.地面设施: 4.地图编辑: 5.地下管网: 6.河网水系: 7.积水点专题: 8.圩区专题:   备注:更多的精彩内容请关注本人的淘宝店http://shop116521643.taobao.com