zoukankan      html  css  js  c++  java
  • Flex+Java+Blazeds


    1、环境:jdk1.6Flex4.6

    2、工具:MyEclipse10

    3、server: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端,新建一个JavaFlexToJava.java

     

    (4)找到WebRootWEB-INFflex文件夹下的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。故而要改动一个地方。

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

     

    选择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文件夹了。

     

     

    后记

    试了几回,看能不能一次成功。结果不行,都是要再配置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的知识和这几个配置文件的知识,还要继续学习。

     

  • 相关阅读:
    如何构建一个优秀的移动网站?谷歌专家教你25招(三)[转]
    如何构建一个优秀的移动网站?谷歌专家教你25招(二)[转]
    如何构建一个优秀的移动网站?谷歌专家教你25招(一)[转]
    如何做到Zero Downtime重启Go服务?
    Go语言AST尝试
    Database Go and JSON
    "创业"半年
    打造完美的go开发环境
    [ReactiveCocoa]最简单的RAC入门操作
    [Node.js]expressjs简单测试连接mysql
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6821189.html
Copyright © 2011-2022 走看看