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

2、工具:MyEclipse10

3、server:Tomcat7

4、连接方式:Blazeds

5、项目类型:Flex项目

6、步骤

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3JhYjUzMDE0MzM4Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

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

选择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文件。获得界面例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3JhYjUzMDE0MzM4Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

可是会报一个错

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3JhYjUzMDE0MzM4Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

[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。故而要改动一个地方。

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

选择Flexserver。发现“内容目录”一项是“WebRoot”字样,记得把Flex编译器中编辑器參数改成

“-services "D:/Workspaces/FlexToJava/WebRoot/WEB-INF/flex/services-config.xml" -locale en_US”。不然会报错。由于Flexserver改动后这边会自己主动把WebRoot改成FlexToJava。要改回来。

(6)又一次部署项目,启动Tomcat,执行FlexToJava.mxml,填入姓名,点击button,弹出对话框。

成功!

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3JhYjUzMDE0MzM4Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

后记

试了几回,看能不能一次成功。结果不行,都是要再配置Flexserver中的内容目录,或者别的方法,这是我得出的比較明晰的一种方法了,大概还有更好的。能够一次成型,先凑合用吧。

这是从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就通过这个通道与server通讯。

<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的知识和这几个配置文件的知识,还要继续学习。

Flex+Java+Blazeds的更多相关文章

  1. flex+java+blazeds 多通道好文

    http://www.cnblogs.com/noam/archive/2010/08/05/1793504.html blazeds, spring3整合实现RPC服务和消息服务 环境: MyEcl ...

  2. Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据

    http://www.cnblogs.com/RocD-DuPeng/articles/1751040.html 一.建立Flex与Java交互的工程. 本文中讲到的交互是利用Blazeds的,因为这 ...

  3. Spring 整合 Flex (BlazeDS)无法从as对象 到 Java对象转换的异常:org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.Date' to required type 'java.sql.Timestamp' for property 'wfsj'; nested exception is java.lang.Ill

    异常信息如下: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value ...

  4. Flex通过Blazeds利用Remoteservice与后台java消息推送

    http://www.cnblogs.com/xia520pi/archive/2012/05/26/2519343.html http://computerdragon.blog.51cto.com ...

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

    开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.地图框选搜 ...

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

    开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.视频监控: ...

  7. GIS管网项目-flex/java

    开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.应急指挥: ...

  8. GIS公交查询-flex/java

    开发语言是flex.java,开发平台是myeclise.eclise,开发接口是arcgis api for flex,提供以下的功能: 1.站名-站名查询: 2.站点查询: 3.路线查询: 备注: ...

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

    数据写入到excel中采用的是Apache POI: //java后台的一个工具类(该工具类适用于为不同字段添加,方便) /* 下面这个方法是将list转换为Excel工作表的 */ public s ...

随机推荐

  1. Jenkins中部署Sonar代码检查

    1 安装并启动sonarqube docker pull sonarqube:7.5-community docker run \ --name sonarqube \ --network ci \ ...

  2. KVM中的网络简介(qemu-kvm)

    emu-kvm主要向客户机提供了如下4种不同模式的网络: 1)基于网桥(bridge)的虚拟网卡 2)基于NAT(Network Addresss Translation)的虚拟网络 3)QEMU内置 ...

  3. python3.x Day6 协程

    协程:#定义来自牛人alex博客协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程.协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈 ...

  4. fshc模块fsch2mcu_if理解

    fshc2mcu_if中包括ahb2reg/ahb2fifo两个文件,都是协议转换文件.ahb2reg下游文件是reg files,ahb2fifo下游文件是fifo控制器.所有的配置和flag都是要 ...

  5. Spring Boot Web开发中Thymeleaf模板引擎的使用

    这里使用的是idea 1.新建Spring Boot项目 File-->New-->Project...,然后选择左边的Spring Initializr-->Next,可根据自己的 ...

  6. STM32——输入捕获实验原理及配置步骤

    输入捕获实验原理及配置步骤 一.输入捕获概念 STM32的输入捕获,简单的说就是通过检测 TIMx_CHx (定时器X的通道X)上的 边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定 ...

  7. STL中set求交集、并集、差集的方法

    并集(http://zh.cppreference.com/w/cpp/algorithm/set_union) 交集(http://zh.cppreference.com/w/cpp/algorit ...

  8. 大数据学习——hive函数

    1 内置函数 测试各种内置函数的快捷方法: 1.创建一个dual表 create table dual(id string); 2.load一个文件(一行,一个空格)到dual表 3.select s ...

  9. 大数据学习——yum练习安装mysql

    1. 安装mysql 服务器端: yum install mysql-server yum install mysql-devel 2. 安装mysql客户端: yum install mysql 3 ...

  10. UVALive 7148 LRIP

    LRIPTime Limit: 10000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 解题:树分治 参考了Oyking大神的解法 ...